Почему не меняется переменная?

Хочу написать код, чтобы 3 процесса запустились, и ждали пока все 3 будут готовы сделать действие:
counts = 0
vsego_processov = 3

def browser(name):
    global counts
    #тут мы что-то делаем
    print(mp.current_process())
    time.sleep(random.randint(3, 7))
    counts += 1
    print(counts)
    while counts != vsego_processov:
        pass


if __name__ == "__main__":
    with mp.Pool(mp.cpu_count()) as p:
        p.map(browser, [1, 2, 3])

А в итоге в counts лежит только 1, а не 3, хотя каждый прибавил единицу
Тега мультипроцессоры не нашел, библиотека multiprocessing
  • Вопрос задан
  • 220 просмотров
Пригласить эксперта
Ответы на вопрос 1
lxstvayne
@lxstvayne
Люблю Python
Потому что каждый процесс порождает интерпретатор со своей областью памяти, соответственно, каждый интерпретатор в своей области памяти увеличит твой counts. https://docs.python.org/3/library/multiprocessing....
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы