ホームページ  >  記事  >  バックエンド開発  >  Python で複数のプロセス間で結果キューを共有するにはどうすればよいですか?

Python で複数のプロセス間で結果キューを共有するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-19 18:45:02620ブラウズ

How to Share a Result Queue Between Multiple Processes in Python?

複数のプロセス間で結果キューを共有する方法

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。