Я использую диспетчер мультипроцессинга, чтобы создать список для обмена между двумя процессами.Они просто добавляют 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]
Как я могу поделиться списком безопасным способом?