Задать вопрос
@kgbplus

Очистка deque и multiprocessing?

Вот такая простая проблема. deque.clear() в P0 нормально работает если функцию вызывать непосредственно, но не работает, если вызывать через Process.

Как очистить очередь в этом случае? (global не помогает точно)

from collections import deque
from time import sleep
from multiprocessing import Process

buffer = deque([],1200)
in_data = [range(0,441)]

def append():
    buffer.append(in_data)

def P0():
    buffer.clear()

if __name__ == '__main__':
    for _ in range(5):
        append()
        print("loop A, len after append: {}".format(len(buffer)))
        sleep(1)

    print("starting P0")
    Process(target=P0, args=()).start()

    for _ in range(5):
        append()
        print("loop B, len after append: {}".format(len(buffer)))
        sleep(1)
  • Вопрос задан
  • 189 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Решения вопроса 1
@dmtrrr
Backend developer
Нужно использовать очередь из модуля multiprocessing
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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