Мне нужно создать скрипт, который в каком-то состоянии порождает параллельный процесс (рабочий) и заставляет его выполнять какое-то задание ввода-вывода. И когда он закончит - закройте этот процесс. Но похоже, что процессы не имеют тенденций к выходу по умолчанию.Создайте несколько параллельных процессов и убейте их после финиша
Вот мой подход:
import multiprocessing
pool = multiprocessing.Pool(4)
def f(x):
sleep(10)
print(x)
return True
r = pool.map_async(f, [1,2,3,4,5,6,7,8,9,10])
Но я запускаю его в IPython и whait для всех отпечатков, после этого я могу запустить пс Окс | grep ipython и увидеть много процессов. Похоже, эти рабочие все еще живы.
Возможно, я что-то не так, но как я могу заставить эти процессы прекратить работу, когда они закончат свою задачу? И какой подход я должен использовать, если я хочу, чтобы создать много рабочих один за другим (например, получив некоторое сообщение rmq)?
Почему вы передаете 'None' для объединения? Разве это не количество процессов, которые вы собираетесь использовать? – roganjosh
Да, спасибо! Исправлено, изменений нет. – Paul