web-dev-qa-db-ja.com

multiprocessing.pool.ApplyResultのドキュメントはどこにありますか?

_multiprocessing.pool.ApplyResult_の厳密なAPIドキュメントは恐ろしく少ししかありません(読んでください[〜#〜] zero [〜#〜])。マルチプロセッシングの説明ドキュメントでは、aboutApplyResultsについて説明していますが、定義していません。

同じことは_multiprocessing.pool.Pool_にも当てはまるようですが、Pythonマルチプロセッシングガイドはより適切にカバーしているようです。

ApplyResulthelp()の結果でさえごくわずかです:

_ |  get(self, timeout=None)
 |  
 |  ready(self)
 |  
 |  successful(self)
 |  
 |  wait(self, timeout=None)
_
  • Get()Ready()が得られます。それらは大丈夫です。

  • あなたがwait()呼び出しであなたを待つと想定する「プール」を扱っているとすれば、私はget()が何のためにあるのか全くわかりません。これは「結果を待つが、今は得られない」ですか、それともOSスタイルの待ちですか?もしそうなら、それは意味

  • successful()が何であるかについても同様に私は確信がありません。

16

ドキュメントの不具合に間違いはありません。クラスは実際にはApplyResultではなく AsyncResult としてドキュメント化されています。 2つは同じクラスの異なる名前です。

>>> multiprocessing.pool.ApplyResult is multiprocessing.pool.AsyncResult
True

名前はいつか変更されている可能性があり、ドキュメントは一貫して更新されていませんが、すべてがドキュメント化されていますが、間違った名前でドキュメント化されています。 ( クローズドバグ があり、ドキュメントがAsyncResultについて言及していると誰かが指摘しましたが、クラスは実際にはApplyResultと呼ばれているため、エイリアスとしてAsyncResultを追加しました。)

14
BrenBarn

これは私がコードから見るものです:

  • ready():「スレッド」によって実行されたタスクが結果を返す準備ができている場合にtrueを返します
  • get(timeout=None):タイムアウト単位(浮動小数点秒単位)の結果を待機し、正常終了すると結果を返します。タイムアウト時はTimeoutErrorが発生し、失敗した場合は関連する例外が発生します。
  • wait(timeout=None)threading.Condition.wait([timeout])のように、ワーカー「スレッド」によって設定された条件変数で待機しますDOES NOT IMPLY子「スレッド」の刈り取り。
  • success()readyの場合、get()の結果が値になる場合はTrueを返します。それ以外の場合は、Falseを返します(つまり、結果は例外になります)。アサーションが有効な場合、準備ができていなければアサートします。この関数は、スローされた例外を回避するために使用できます。
0