我有一些代码可以并行运行任务:
procs = []
for task in tasks:
procs.append(multiprocessing.Process(target=foo, args=(task,)))
procs[-1].start()
for proc in procs:
proc.join()
我想添加foo()的能力来抛出我定义的TaskFailError。我希望这个错误最终终止程序,所以我将在上面的代码中重新加载它,但我想让其他任务先完成。我不知道该怎么做。我考虑过这样的事情:
procs = []
try:
for task in tasks:
procs.append(multiprocessing.Process(target=foo, args=(task,)))
procs[-1].start()
for proc in procs:
proc.join()
except TaskFailError as err:
for proc in procs:
proc.join()
raise err
但重复代码是一个红旗,如果第二个进程也引发错误会发生什么?