Я пытался настроить код параллельных заданий, используя многопроцессорный модуль. Я хотел бы прекратить всю работу ребенка в течение 10 секунд. Я сделал следующий код, используя аргумент timeout в функции присоединения к процессу. Однако я обнаружил, что время завершения всех заданий зависит как от значений времени ожидания, так и от числа заданий. Как рассчитать точное время?
import time
from multiprocessing import Manager, Process
def f(x, dic):
time.sleep(60)
print "Time: ", x
dic[x] = "Done"
mng = Manager()
dic = mng.dict()
jobs = [Process(target=f, args=(i, dic)) for i in range(50)]
for job in jobs:
job.start()
for job in jobs:
job.join(timeout=10)
for job in jobs:
job.terminate()
for job in jobs:
job.join()
print dic.keys()