Python多重处理的管理员列表没有锁?

时间:2019-09-27 04:07:49

标签: python multiprocessing thread-safety

我使用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]

如何以过程安全的方式共享列表?

0 个答案:

没有答案