andrey_u
@andrey_u

Почему не видно изменения переменной из процесса Python?

Здравствуйте!

Накидал простой код для примера:

import os
import time
from multiprocessing import Pool, Process

my_list = []


def do(x):
    my_list.append(x)
    time.sleep(.5)
    return x


def write_info():
    while True:
        os.system('clear')
        print('My list count:', len(my_list))
        time.sleep(1)


if __name__ == '__main__':
    p_info = Process(target=write_info)
    p_info.start()

    with Pool(5) as p:
        result = p.map(do, range(100))

    p_info.join()


Выводит постоянно: My list count: 0

Подскажите в чем проблема?
Почему из процесса не видно изменения переменной my_list?
  • Вопрос задан
  • 41 просмотр
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Потому что не надо использовать глобальные переменные.
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
И впрямь не надо использовать глобальные переменные. Они свои в каждом процессе.
Изучите доки по multiprocessing, в частности класс Queue для двусторонней передачи данных.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы