[英]How to update a dictionary in multiprocessing Python
预先感谢您的帮助。
我正在尝试更新与多处理并行的 python 代码中的字典。 不幸的是,我无法分享我的代码,因为它非常复杂,但我会尝试解释我的问题。
首先,我没有共享字典,出于某种原因,应该在每个进程中分别创建字典。 当我向这个字典中添加一个元素时,就会出现问题。 每次我向字典中添加一个新键:值时,以前键的所有值都等于新值。 像这样的东西...
def func():
my_dict = {}
my_dict['first'] = 1
my_dict['second'] = 2
print(my_dict)
import multiprocessing as mp
pool = mp.Pool(2)
pool.map(func)
结果将是这样的
my_dict = {'first':2, 'second':2}
我也使用了 Manager().dict() 但我遇到了几个问题,所以我决定先问。
感谢你的宝贵时间。
在您的示例中, my_dict
未在进程之间共享或同步,我认为应该没问题。 我跑
def func(_):
my_dict = {}
my_dict['first'] = 1
my_dict['second'] = 2
print(my_dict)
import multiprocessing as mp
pool = mp.Pool(2)
pool.map(func, range(2))
对于 Ubuntu 18.04.5 上的 python 3.8.10,它输出
{'first': 1, 'second': 2}
{'first': 1, 'second': 2}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.