複数のプロセス間で結果キューを共有する方法
multiprocessing モジュールの apply_async を使用して非同期ワーカー プロセスを操作する場合() 関数を使用する場合は、キューを安全に共有する方法を考慮することが重要です。エラー「RuntimeError: キュー オブジェクトは継承を通じてプロセス間でのみ共有する必要があります」は、pickle/unpickle の問題を防ぐ方法でキューを渡す必要があることを示しています。
これを解決するには、multiprocessing.Manager を利用できます。 () クラスは、オブジェクトを管理し、さまざまなワーカーがアクセスできるようにする方法を提供します。
<code class="python">import multiprocessing def worker(name, que): que.put("%d is done" % name) if __name__ == '__main__': pool = multiprocessing.Pool(processes=3) m = multiprocessing.Manager() q = m.Queue() workers = pool.apply_async(worker, (33, q))</code>
この例では、Manager オブジェクト (m) を作成し、それを使用してキューを管理します (q)。これにより、非同期シナリオでも複数のプロセスがキューに安全にアクセスできるようにする共有メモリ セグメントが作成されます。
以上がPython で複数のプロセス間で結果キューを共有するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。