使用多处理Process对象,当其中一个发生异常时,我们如何终止所有活动进程?
from multiprocessing import Process
from time import sleep
def func(i):
print 'begin', i
sleep(i)
if i == 3:
raise Exception
print 'end', i
def terminate_all(procs):
for p in procs:
if p.is_alive():
p.terminate()
processes = []
for i in range(0,10):
p = Process(target=func, args=(i,))
processes.append(p)
p.start() # where do I catch the Exception and call terminate_all?
for p in processes:
p.join()
答案 0 :(得分:0)
基于链接问题中的@abranches答案,我能够在发生异常时终止进程。使用Pipe来包装异常处理。这是代码:
.gitignore