プロセスプールがタスクの実行を完了したことを知る方法はありますか?完了したタスクの非ブロック検出マルチブロックプール
_process_pool = mp.Pool(processes=num_workers)
私はバッチによってプールにタスクを追加してい
:
for batch in gen_batches():
_process_pool.map_async(fn, batch)
すべてのタスクが行われている時に知る方法はありますか? callback
はここでは機能しません。そして、私は_process_pool.join()
プールは他のマルチプロセッシング方法に比べて非常に制限されています。私は "マルチプロセスインポートプロセス、パイプ"からチェックアウトします。ワーカーを作成することができます(プロセス)。それらが完了すると、Pipe経由でメインスレッドにメッセージを渡すことができます。このルートに行く場合は、 "daemon = True"に関するものを必ず読んでください。これは孤児の孤児を防ぐでしょう。 https://docs.python.org/2/library/multiprocessing.html#pipes-and-queuesとhttps://docs.python.org/2/library/multiprocessing.html#multiprocessing.Process.daemon – 16num
私はできます値とロックを使用してください。グローバル値を使用し、プロセッサファンクションに渡す代わりにロックを使用することの欠点はありますか? グローバル変数でも正しく動作します。私はここに何かを逃していますか – vin