首页  >  文章  >  后端开发  >  如何在多处理中更新子进程的全局变量?

如何在多处理中更新子进程的全局变量?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-06 07:54:02486浏览

How Can I Update Global Variables from Subprocesses in Multiprocessing?

多处理 |全局变量更新未返回到父进程

在多处理中,每个子进程作为一个单独的 Python 实例运行,具有自己的内存和全局状态。因此,对子流程中的全局变量进行的任何更新对于父流程都是不可见的。此外,使用共享代理或队列在进程之间传递的数据必须是可pickle的。

要解决有关 LORR 对象的不可pickleability 的特定问题,请考虑以下方法:

  1. 创建 LORR 的可pickle子类
    这涉及创建一个继承自 LORR 的新类并实现 __getstate__ 和 __setstate__ 方法以启用 pickle。
  2. 传递对ctype object:
    找到一种方法将相关数据存储在 ctype 对象中,并将对该对象的引用传递给子进程。不过这种方式可能并不可靠。
  3. 使用队列发送消息
    使用队列建立父子进程之间的通信系统。父级可以向子级发送方法调用,子级可以通过队列返回结果。

请记住,最合适的方法将取决于 LORR 对象的具体实现和功能。

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

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