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

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

Susan Sarandon
Susan Sarandon原创
2024-11-08 04:19:01787浏览

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

全局变量更新未反映在多处理的父进程中

在多处理中,创建一个新进程会启动一个具有自己的全局状态的单独的Python实例。对子进程中的全局变量进行的修改对父进程不可见。

此问题源于使用多处理在进程之间传输的数据通常是腌制的这一事实。 Pickling 要求对象可序列化,这对于某些对象(如 LORR 实例)可能是不可能的。

要解决此问题,请考虑以下方法:

  1. 创建 ctype 对象: 将数据存储在 ctype 对象中并将内存引用传递给子进程。然而,这种方法并不常用,而且可能很复杂。
  2. 子类化 LORR: 如果 LORR 是一个类并且可以子类化,则实现 getstate setstate 方法来启用酸洗。不过,这需要深入了解 LORR 的内部结构。
  3. 通过队列进行消息传递: 或者,您可以使用队列在进程之间进行通信。不传递 LORR 实例,而是向子进程发送消息来请求特定方法执行。然后,可以通过队列将方法中的数据作为字符串返回。

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

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