多处理无法更新父进程中的全局变量
在多处理中,父进程和子进程存在于单独的Python实例中,有自己的实例内存和全局变量。父进程无法访问子进程中共享全局变量所做的更改。此外,序列化协议(例如 pickle)施加的约束禁止传输不可腌制的对象。
应对挑战
一个潜在的解决方案是找到一种存储数据的方法使用 ctype 对象,允许将内存引用传递给子进程。然而,这种方法并不简单。
特定于 LORR 对象
LORR 对象的不可腌制性提出了进一步的挑战。为了克服这个问题,可以考虑子类化 LORR 并实现 __setstate__ 和 __getstate__ 方法进行酸洗。或者,可以从 LORR 实例中提取必要的数据,并通过队列将其作为字符串传递,从而消除对象序列化的需要。这种方法涉及向子进程发送消息指令并接收包含所需数据的响应。
以上是在Python中使用多处理时如何更新父进程中的全局变量?的详细内容。更多信息请关注PHP中文网其他相关文章!