done = False
while not done:
    job_start = time.time()
Jobs = pool.map_async(args)
redo = False
while not Jobs.ready():
    if time.time() - job_start > maxWait:
        pool.terminate()
pool = multiprocessing.pool(args)
redo = True
break
if not redo:
    result = Jobs.get()
done = True
Python multiprocessing.Pool with processes that crash