一种程序,它创建多个进程,这些进程在一个可联接队列上工作,Q,并可能最终操纵一个全局字典D,以存储结果。(因此每个子进程可以使用D存储其结果,并查看其他子进程产生的结果)
如果我在子进程中打印字典D,我会看到对它所做的修改(即在D上)。但是在主进程加入Q之后,如果我打印D,它就是一个空的dict
我知道这是一个同步/锁定问题。有人能告诉我这里发生了什么,以及我如何同步对D的访问吗
一般的回答是使用管理器对象。根据文件改编:
来自多处理导入过程管理器的
定义f(d):
d[1]+=“1”
d['2']+=2
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
经理=经理()
d=manager.dict()
d[1]=“1”
d['2']=2
p1=进程(目标=f,参数=d)
p2=进程(目标=f,参数=(d,))
p1.开始()
p2.start()
p1.join()
p2.join()
打印d
输出:
$python mul.py
{1: '111', '2': 6}