Es gibt erschreckend wenig strenge API-Dokumentation (lesen Sie: ZERO ) für multiprocessing.pool.ApplyResult
. Die Multiprozessor-Erklärung doc spricht über ApplyResult
s, definiert sie aber nicht.
Dies scheint auch für multiprocessing.pool.Pool
zu gelten, obwohl die Python-Multiprocessing-Anleitung es anscheinend besser abdeckt.
Selbst die Ergebnisse von ApplyResult
help()
sind dürftig:
Get()
und Ready()
bekomme ich. Das ist in Ordnung.
Ich habe absolut keine Ahnung, wofür wait()
da ist
Umgang mit einem "Pool", von dem man annehmen würde, dass er auf Sie wartet
der Aufruf get()
. Ist dies "warten Sie auf das Ergebnis, aber bekommen Sie es jetzt nicht" Oder ist es ein OS-Stil warten? Und wenn ja, was würde das bedeuten?
Ich bin mir ebenfalls nicht sicher, worum es bei successful()
geht.
Ihr Recht, dass es in der Dokumentation einen Fehler gibt: Die Klasse ist tatsächlich dokumentiert als AsyncResult , nicht ApplyResult. Die beiden sind unterschiedliche Namen für die gleiche Klasse:
%Vor%Der Name wurde möglicherweise irgendwann geändert und die Dokumente wurden nicht konsistent aktualisiert, aber alles ist dokumentiert, es ist nur unter dem falschen Namen dokumentiert. (Es gibt einen geschlossenen Fehler , in dem jemand darauf hingewiesen hat, dass in den Dokumenten AsyncResult erwähnt wird, die Klasse aber eigentlich ApplyResult heißt, daher wurde AsyncResult hinzugefügt als Alias.)
Das sehe ich aus dem Code:
ready()
: gibt "true" zurück, wenn die von "thread" ausgeführte Aufgabe bereit ist, ein Ergebnis zurückzuliefern get(timeout=None)
: wartet auf ein Ergebnis für Timeout-Einheiten (in Fließkomma-Sekunden) und gibt das Ergebnis nach erfolgreichem Abschluss zurück. Bei Timeout wird ein TimeoutError
ausgelöst, bei einem nicht erfolgreichen Abschluss wird die zugehörige Ausnahme ausgelöst. wait(timeout=None)
: wartet auf eine Bedingungsvariable, die vom Worker "thread" festgelegt wurde, wie in threading.Condition.wait([timeout])
NICHT IMPLIZIERT Ernten des untergeordneten "threads". success()
: Wenn ready
, gibt True
zurück, wenn das Ergebnis von get()
ein Wert ist. Andernfalls wird False
zurückgegeben (d. H. Das Ergebnis ist eine Ausnahme). Wenn Assertionen aktiviert sind, wird Assert, wenn nicht bereit. Diese Funktion kann verwendet werden, um ausgelöste Ausnahmen zu vermeiden. Tags und Links python python-multiprocessing python-2.x python-2.6