ホームページ >バックエンド開発 >Python チュートリアル >マルチプロセッシングにおける「キュー オブジェクトは継承を通じてプロセス間でのみ共有されるべきです」エラーを解決するにはどうすればよいですか?
マルチプロセッシングによる共有キューの管理
Python のマルチプロセッシング モジュールでは、multiprocessing.apply_async() を使用するときにプロセス間で共有キューを作成する場合は慎重な考慮が必要です。非同期ワーカープロセスを開始します。 「キュー オブジェクトは、継承を通じてプロセス間でのみ共有されるべきです。」キューをワーカーに直接渡そうとするとエラーが発生します。
この問題を解決するには、multiprocessing.Manager を利用してキューを管理し、ワーカー プロセスからアクセスできるようにします。 multiprocessing.Manager は、共有メモリ セグメント内のさまざまな種類のデータを制御およびシリアル化するマネージャー オブジェクトを作成するためのメソッドを提供します。
次のコード スニペットは、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>
この例では、multiprocessing.Manager() は共有データを管理するマネージャー オブジェクト (m) を作成し、ワーカー プロセスに渡すことができるプロキシ オブジェクトを提供します。 m.Queue() を呼び出すことで、マネージャーによって管理されるキューを作成します。このキューは、すべてのワーカー プロセスからアクセスできます。次に、マネージャーはプロキシ オブジェクトをシリアル化してワーカーに渡し、ワーカーが共有キューと安全に通信できるようにします。
以上がマルチプロセッシングにおける「キュー オブジェクトは継承を通じてプロセス間でのみ共有されるべきです」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。