Список менеджера многопроцессорной обработки Python не заблокирован? - PullRequest
0 голосов
/ 27 сентября 2019

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

Как я могу поделиться списком безопасным способом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...