首页 > 后端开发 > Python教程 > 如何在Python中的多个进程之间共享和修改字典?

如何在Python中的多个进程之间共享和修改字典?

Susan Sarandon
发布: 2024-11-14 17:44:02
原创
775 人浏览过

How to Share and Modify a Dictionary Between Multiple Processes in Python?

多处理:进程间字典共享

考虑多个进程在共享队列 Q 上操作并操作全局字典的场景,D。令人惊讶的是,尽管在子进程中观察到了修改,但在加入 Q 后访问 D 会显示一个空字典。

这个行为源于同步问题。每个进程都在自己的内存空间上运行,子进程中对 D 所做的更改不会自动反映在主进程中。为了解决这个问题,同步措施是必要的。

解决方案:使用 Manager 对象

Python 标准库提供了使用 Manager 对象的解决方案。该对象提供对进程间共享数据的同步访问:

from multiprocessing import Process, Manager

def f(d):
    d[1] += '1'
    d['2'] += 2

if __name__ == '__main__':
    manager = Manager()

    d = manager.dict()
    d[1] = '1'
    d['2'] = 2

    p1 = Process(target=f, args=(d,))
    p2 = Process(target=f, args=(d,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()

    print(d)
登录后复制

在此示例中,Manager 对象的 dict() 方法创建一个共享字典 d,所有进程都可以访问该字典。子进程中对 d 所做的更改会通过 Manager 对象管理的共享内存传播到主进程。

输出:

$ python mul.py
{1: '111', '2': 6}
登录后复制

以上是如何在Python中的多个进程之间共享和修改字典?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板