マルチプロセッシングで親プロセスのグローバル変数を更新できない
マルチプロセッシングでは、親プロセスと子プロセスは別々の Python インスタンスに存在し、独自のインスタンスが存在します。メモリ変数とグローバル変数。子プロセスの共有グローバル変数に加えられた変更には、親プロセスはアクセスできません。さらに、pickle などのシリアル化プロトコルによって課される制約により、pickle 不可能なオブジェクトの転送が禁止されます。
課題への対処
考えられる解決策の 1 つは、データを保存する方法を見つけることです。 ctype オブジェクトを使用すると、メモリへの参照を子プロセスに渡すことができます。ただし、このアプローチは簡単ではありません。
LORR オブジェクトに固有
LORR オブジェクトの非 pickleability は、さらなる課題を引き起こします。これを克服するには、LORR をサブクラス化し、ピクルス用の __setstate__ メソッドと __getstate__ メソッドを実装することを検討できます。あるいは、LORR インスタンスから必要なデータを抽出し、それをキュー経由で文字列として渡すことで、オブジェクトのシリアル化の必要性をなくすことも可能です。このアプローチには、子プロセスにメッセージ命令を送信し、必要なデータを含む応答を受信することが含まれます。
以上がPython でマルチプロセッシングを使用する場合、親プロセスのグローバル変数を更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。