繁体   English   中英

如何在多处理 Python 中更新字典

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM