Ist es irgendwie möglich, mit Scala's parallelen Sammlungen eine Iterator
ohne zu parallelisieren, die es vorher vollständig auswertet?Paralleler Iterator in Scala
Hier spreche ich über die Parallelisierung der funktionalen Transformationen auf einem Iterator
, nämlich map
und flatMap
. Ich denke, dies erfordert, einige Elemente der Iterator
im Voraus zu bewerten und dann mehr zu berechnen, sobald einige über next
verbraucht werden.
Alles, was ich finden könnte, würde erfordern, dass der Iterator bestenfalls zu Iterable
oder Stream
konvertiert wird. Die Stream
wird dann komplett ausgewertet, wenn ich .par
darauf anrufe.
Ich begrüße auch Vorschläge zur Umsetzung, wenn dies nicht ohne weiteres zur Verfügung steht. Implementierungen sollten parallel map
und flatMap
unterstützen.
Die Antwort ist _probably no_ aber können Sie ein wenig mehr über das sagen, was Sie von diesem wollen? Insbesondere wann sollte die Berechnung beginnen - nachdem Sie den Iterator erstellt haben oder wenn Sie etwas aufrufen, das die Auswertung erzwingt? –
@RexKerr Scheint wie eine Designwahl; aber wenn es bei der ersten Anfrage gestartet wird, ist die erste Anfrage etwas Besonderes. Ich versuche gerade, so etwas zu implementieren und ich entscheide mich sofort zu starten und die nächsten 'n' Ergebnisse zu speichern. Sobald einer verbraucht ist, berechne ich einen Ersatz. – ziggystar