首页 >后端开发 >Python教程 >在Python中使用多处理时如何更新父进程中的全局变量?

在Python中使用多处理时如何更新父进程中的全局变量?

Barbara Streisand
Barbara Streisand原创
2024-11-07 02:50:02317浏览

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

多处理无法更新父进程中的全局变量

在多处理中,父进程和子进程存在于单独的Python实例中,有自己的实例内存和全局变量。父进程无法访问子进程中共享全局变量所做的更改。此外,序列化协议(例如 pickle)施加的约束禁止传输不可腌制的对象。

应对挑战

一个潜在的解决方案是找到一种存储数据的方法使用 ctype 对象,允许将内存引用传递给子进程。然而,这种方法并不简单。

特定于 LORR 对象

LORR 对象的不可腌制性提出了进一步的挑战。为了克服这个问题,可以考虑子类化 LORR 并实现 __setstate__ 和 __getstate__ 方法进行酸洗。或者,可以从 LORR 实例中提取必要的数据,并通过队列将其作为字符串传递,从而消除对象序列化的需要。这种方法涉及向子进程发送消息指令并接收包含所需数据的响应。

以上是在Python中使用多处理时如何更新父进程中的全局变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn