multiprocessing.Manager を使用して複数のプロセス間で結果キューを共有する方法

Susan Sarandon
リリース: 2024-10-19 18:43:30
オリジナル
129 人が閲覧しました

How to Share a Result Queue Between Multiple Processes Using multiprocessing.Manager?

multiprocessing.Manager を使用して複数のプロセス間で結果キューを共有する

マルチプロセッシングでは、親プロセスと子プロセスの間でキューを共有することが、通信と結果の取得に不可欠です。ただし、apply_async を使用して非同期ワーカー プロセスを開始すると、キューの共有に問題が生じます。

「キュー オブジェクトは継承を通じてプロセス間でのみ共有されるべきである」というエラーを克服するには、multiprocessing.Manager を利用できます。このマネージャー クラスにより、キューなどの共有リソースの作成と管理が可能になります。

キューの作成を multiprocessing.Manager() コンテキスト内に含めることで、すべてのワーカーがキューにアクセスできるようにすることができます。コードを変更する方法は次のとおりです。

<code class="python">if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=3)
    m = multiprocessing.Manager()
    q = m.Queue()
    workers = pool.apply_async(worker, (33, q))</code>
ログイン後にコピー

これで、各ワーカーは共有 q オブジェクトと対話し、結果を基本プロセスに報告できるようになります。このアプローチにより、apply_async.

の非同期の性質を維持しながら、効率的で信頼性の高い結果通信が可能になります。

以上がmultiprocessing.Manager を使用して複数のプロセス間で結果キューを共有する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!