ホームページ  >  記事  >  バックエンド開発  >  マルチプロセッシングのサブプロセスからグローバル変数を更新するにはどうすればよいですか?

マルチプロセッシングのサブプロセスからグローバル変数を更新するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-06 07:54:02488ブラウズ

How Can I Update Global Variables from Subprocesses in Multiprocessing?

マルチプロセッシング |グローバル変数の更新が親に返されない

マルチプロセスでは、各サブプロセスは、独自のメモリとグローバル状態を持つ個別の Python インスタンスとして実行されます。したがって、サブプロセス内のグローバル変数に対して行われた更新は、親プロセスには表示されません。さらに、共有プロキシまたはキューを使用してプロセス間で渡されるデータは、ピクル可能である必要があります。

LORR オブジェクトの非ピクル可能性に関する特定の問題に対処するには、次のアプローチを検討してください。

  1. LORR の pickleable サブクラスを作成します:
    これには、LORR を継承し、pickle を有効にする __getstate__ メソッドと __setstate__ メソッドを実装する新しいクラスの作成が含まれます。
  2. Pass a Reference to a ctype object:
    関連データを ctype オブジェクトに保存し、そのオブジェクトへの参照を子プロセスに渡す方法を見つけます。ただし、このアプローチは信頼できない可能性があります。
  3. キューを使用してメッセージを送信する:
    キューを使用して、親プロセスと子プロセス間の通信システムを確立します。親はメソッド呼び出しを子に送信でき、子はキュー経由で結果を返すことができます。

最適なアプローチは、LORR オブジェクトの特定の実装と機能によって異なることに注意してください。

以上がマルチプロセッシングのサブプロセスからグローバル変数を更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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