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

Python でマルチプロセッシングを使用するときに親プロセスのグローバル変数を更新するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-08 04:19:01667ブラウズ

How to Update Global Variables in Parent Process When Using multiprocessing in Python?

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

マルチプロセッシングでは、新しいプロセスを作成すると、独自のグローバル状態を持つ別の Python インスタンスが開始されます。子プロセス内のグローバル変数に加えられた変更は、親プロセスには表示されません。

この問題は、マルチプロセスを使用してプロセス間で転送されるデータが通常ピクル化されるという事実に起因します。ピクルスにはオブジェクトがシリアル化可能である必要がありますが、LORR インスタンスなどの特定のオブジェクトでは不可能な場合があります。

これを解決するには、次のアプローチを検討してください。

  1. ctype オブジェクトの作成: データを ctype オブジェクトに保存し、メモリ参照を子プロセスに渡します。ただし、このメソッドは一般的には使用されず、複雑になる可能性があります。
  2. LORR のサブクラス化: LORR がクラスでサブクラス化が可能な場合は、getstate を実装します。ピクルスを有効にする setstate メソッド。ただし、これには LORR の内部構造を深く理解する必要があります。
  3. キューを介したメッセージング: あるいは、キューを使用してプロセス間の通信を行うこともできます。 LORR インスタンスを渡す代わりに、特定のメソッドの実行を要求するメッセージを子プロセスに送信します。メソッドからのデータは、キューを介して文字列として返すことができます。

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

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