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

Как передать multiprocessing.Queue() для конкретного процесса?

есть несколько процессов, каждому процессу я присваиваю уникальное имя.

можно ли передать очередь для конкретного процесса по имени?
пример кода
import multiprocessing
import time
def worker(i,stop):
        while True:
            print(f'Worker-{i}')
            if not stop.empty():
                stp=stop.get()
                if(stp==multiprocessing.current_process().name):
                    break
                else:
                    stop.put(stp)
            time.sleep(1)
        print (f'Worker-{i}Вышли из цикла')

if __name__ == '__main__':
    procs = []
    stop=multiprocessing.Queue()
    for i in range(3):
        p = multiprocessing.Process(target=worker, name='worker'+str(i), args=(i,stop))
        p.start()
    time.sleep(5)
    for proc in multiprocessing.active_children():
        if proc.name == 'worker2':
            stop.put(proc.name)
            print(f'Передаем команду остановки процессу {proc.name }.')

Код работает и выполняет то что нужно, но правильно ли каждый раз проверять имя процесса и если имя не совпадает , опять запихивать в очередь данные?
  • Вопрос задан
  • 89 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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