我使用multiprocessing的管理器创建一个列表,以在两个进程之间共享。他们只是将1加20次。最终,我发现最终结果不是40。看来经理的名单不安全吗? 代码如下:
from multiprocessing import Process, Manager
def f(l):
for i in range(20):
l[0] += 1
if __name__ == '__main__':
manager = Manager()
l = manager.list([0] * 10)
p1 = Process(target=f, args=(l,))
p2 = Process(target=f, args=(l,))
p1.start()
p2.start()
p1.join()
p2.join()
print (l)
结果是
[26, 0, 0, 0, 0, 0, 0, 0, 0, 0]
如何以过程安全的方式共享列表?