Wo ist die Dokumentation für multiprocessing.pool.ApplyResult?

8

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:

%Vor%
  • 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.

Mark Gerolimatos 23.11.2016, 20:49
quelle

2 Antworten

7

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.)

    
BrenBarn 23.11.2016, 20:57
quelle
0

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.
Mark Gerolimatos 23.11.2016 21:07
quelle