「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > multiprocessing.Manager を使用して複数のプロセス間で結果キューを共有する方法

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

2024 年 11 月 8 日に公開
ブラウズ:185

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

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

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

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

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

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=3)
    m = multiprocessing.Manager()
    q = m.Queue()
    workers = pool.apply_async(worker, (33, q))

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

の非同期の性質を維持しながら、効率的で信頼性の高い結果通信が可能になります。
リリースステートメント この記事は次の場所に転載されています: 1729334537 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3