Я хочу запустить параллельную параллельную работу и продолжить работу после завершения всех заданий. У меня есть что-то вродеПодождите, пока все задания многопроцессорности не закончатся, прежде чем продолжить.
# based on example code from https://pymotw.com/2/multiprocessing/basics.html
import multiprocessing
import random
import time
def worker(num):
"""A job that runs for a random amount of time between 5 and 10 seconds."""
time.sleep(random.randrange(5,11))
print('Worker:' + str(num) + ' finished')
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
jobs.append(p)
p.start()
# Iterate through the list of jobs and remove one that are finished, checking every second.
while len(jobs) > 0:
jobs = [job for job in jobs if job.is_alive()]
time.sleep(1)
print('*** All jobs finished ***')
это работает, но я уверен, что должен быть лучший способ, чтобы ждать, пока все рабочие места, чтобы закончить, чем снова и снова итерацию над ними, пока они не сделали.
Это именно то, что я искал, спасибо :) – Hybrid
Примечание для будущих искателей: это использование может указывать на задачу, которая выиграет от [Пул] (https://docs.python.org/2/library /multiprocessing.html#using-a-pool-of-workers). – kungphu