首页  >  文章  >  后端开发  >  如何在Python多处理中的进程之间共享数据?

如何在Python多处理中的进程之间共享数据?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-06 16:23:021068浏览

How to Share Data Between Processes in Python Multiprocessing?

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

在多处理中,为每个进程创建一个新的 Python 实例,从而产生不同的全局变量州。因此,子进程对全局变量的更新对父进程仍然不可见。

不可拾取的对象

多处理依赖于通过 pickle 进行序列化。如果您想要交换的对象无法被 pickle,它们就无法在进程之间共享。这包括存储在 Manager 对象中或通过队列传输的任何数据。

替代方法

  • 自定义状态管理:考虑使用解决方案在多处理模块之外,例如共享内存或数据库,以管理进程范围的状态。
  • 子类化和 Pickling: 如果不可picklable 对象是 Python 类,请调查以下可能性对其进行子类化并实现 getstatesetstate 方法来启用 pickling。
  • 通过队列进行数据交换: 不要直接传递不可picklable 对象,而是考虑传输通过队列将所需数据作为字符串或其他可序列化格式。这允许子进程无需对象序列化即可操作数据。

以上是如何在Python多处理中的进程之间共享数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

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