python多进程全局共享变量Manager.dict() 的 value 未修改的问题

  • Post author:
  • Post category:python


一般修改字典

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 版权协议,转载请附上原文出处链接和本声明。