@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 }.')

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

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

Похожие вопросы
22 нояб. 2024, в 12:53
25000 руб./за проект
22 нояб. 2024, в 12:20
10000 руб./за проект
22 нояб. 2024, в 11:53
3000 руб./за проект