一般修改字典
dict
的值是
list
的时候,很容易想到这样操作
a = {'1':[1]}
a['1'].append(2)
print(a) # {'1': [1, 2]}
但是在多进程共享变量
Manager.dict()
的时候就有问题了
程序给
Manager.dict()
初始化为
{'1':[1]}
,然后启动两个进程,其中检查
2
是否在 dict 中,如果不在,就将
{'2':[2]}
加入字典,如果
2
在 dict 中,就将
2
的值中加入
3
,最终输出
{'1': [1], '2': [2,3]}
。
但是从结果中来看,全局共享变量
d
并没有被 2 个进程修改,而只是被其中一个进程修改了,另一个进程未感知到这种修改。
于是尝试了直接
append
原来 Manager.dict() 中修改值是无效的
,于是尝试获取原来的值,对原来的值修改,然后赋值给 dict 的方法。
最终问题得到解决。
版权声明:本文为qq_26826585原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。