Multiprocessing.Pool: どのメソッドを使用する必要がありますか?
マルチプロセッシングを使用すると、Python は複数のプロセス間で関数を同時に実行できます。ただし、特に Pool.apply、Pool.apply_async、および Pool.map を考慮する場合、適切なメソッドの選択は混乱する可能性があります。それらの違いと使用例を明確にしましょう:
Pool.apply 対 Pool.apply_async 対 Pool.map
1. Pool.apply:
2. Pool.apply_async:
3. Pool.map:
正しい方法の選択
次の場合は Pool.apply を使用します。
次の場合は Pool.apply_async を使用します。
次の場合は Pool.map を使用します。
例: Pool.apply_async の非同期コールバック
<code class="python">import multiprocessing as mp import time def foo_pool(x): time.sleep(2) return x*x result_list = [] def log_result(result): result_list.append(result) def apply_async_with_callback(): pool = mp.Pool() for i in range(10): pool.apply_async(foo_pool, args = (i, ), callback = log_result) pool.close() pool.join() print(result_list) if __name__ == '__main__': apply_async_with_callback()</code>
出力:
[1, 0, 4, 9, 25, 16, 49, 36, 81, 64]
Pool.map とは異なり、結果の順序が関数呼び出しの順序と一致しない可能性があることに注意してください。
以上がPython マルチプロセッシングではどのプール メソッドを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。