Задать вопрос
@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)
  • Вопрос задан
  • 182 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@dmtrrr
Backend developer
Нужно использовать очередь из модуля multiprocessing
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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