_multiprocessing.pool.ApplyResult
_の厳密なAPIドキュメントは恐ろしく少ししかありません(読んでください[〜#〜] zero [〜#〜])。マルチプロセッシングの説明ドキュメントでは、aboutApplyResult
sについて説明していますが、定義していません。
同じことは_multiprocessing.pool.Pool
_にも当てはまるようですが、Pythonマルチプロセッシングガイドはより適切にカバーしているようです。
ApplyResult
help()
の結果でさえごくわずかです:
_ | get(self, timeout=None)
|
| ready(self)
|
| successful(self)
|
| wait(self, timeout=None)
_
Get()
とReady()
が得られます。それらは大丈夫です。
あなたがwait()
呼び出しであなたを待つと想定する「プール」を扱っているとすれば、私はget()
が何のためにあるのか全くわかりません。これは「結果を待つが、今は得られない」ですか、それともOSスタイルの待ちですか?もしそうなら、それは意味?
successful()
が何であるかについても同様に私は確信がありません。
ドキュメントの不具合に間違いはありません。クラスは実際にはApplyResultではなく AsyncResult としてドキュメント化されています。 2つは同じクラスの異なる名前です。
>>> multiprocessing.pool.ApplyResult is multiprocessing.pool.AsyncResult
True
名前はいつか変更されている可能性があり、ドキュメントは一貫して更新されていませんが、すべてがドキュメント化されていますが、間違った名前でドキュメント化されています。 ( クローズドバグ があり、ドキュメントがAsyncResultについて言及していると誰かが指摘しましたが、クラスは実際にはApplyResultと呼ばれているため、エイリアスとしてAsyncResultを追加しました。)
これは私がコードから見るものです:
ready()
:「スレッド」によって実行されたタスクが結果を返す準備ができている場合にtrueを返しますget(timeout=None)
:タイムアウト単位(浮動小数点秒単位)の結果を待機し、正常終了すると結果を返します。タイムアウト時はTimeoutError
が発生し、失敗した場合は関連する例外が発生します。wait(timeout=None)
:threading.Condition.wait([timeout])
のように、ワーカー「スレッド」によって設定された条件変数で待機しますDOES NOT IMPLY子「スレッド」の刈り取り。success()
:ready
の場合、get()
の結果が値になる場合はTrue
を返します。それ以外の場合は、False
を返します(つまり、結果は例外になります)。アサーションが有効な場合、準備ができていなければアサートします。この関数は、スローされた例外を回避するために使用できます。