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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-07 02:50:02228ブラウズ

How Can I Update Global Variables in the Parent Process When Using Multiprocessing in Python?

マルチプロセッシングで親プロセスのグローバル変数を更新できない

マルチプロセッシングでは、親プロセスと子プロセスは別々の Python インスタンスに存在し、独自のインスタンスが存在します。メモリ変数とグローバル変数。子プロセスの共有グローバル変数に加えられた変更には、親プロセスはアクセスできません。さらに、pickle などのシリアル化プロトコルによって課される制約により、pickle 不可能なオブジェクトの転送が禁止されます。

課題への対処

考えられる解決策の 1 つは、データを保存する方法を見つけることです。 ctype オブジェクトを使用すると、メモリへの参照を子プロセスに渡すことができます。ただし、このアプローチは簡単ではありません。

LORR オブジェクトに固有

LORR オブジェクトの非 pickleability は、さらなる課題を引き起こします。これを克服するには、LORR をサブクラス化し、ピクルス用の __setstate__ メソッドと __getstate__ メソッドを実装することを検討できます。あるいは、LORR インスタンスから必要なデータを抽出し、それをキュー経由で文字列として渡すことで、オブジェクトのシリアル化の必要性をなくすことも可能です。このアプローチには、子プロセスにメッセージ命令を送信し、必要なデータを含む応答を受信することが含まれます。

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

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