Python:根据异常类型终止所有活动进程

时间:2016-02-25 06:11:08

标签: python python-2.7 python-multiprocessing

使用多处理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()

1 个答案:

答案 0 :(得分:0)

基于链接问题中的@abranches答案,我能够在发生异常时终止进程。使用Pipe来包装异常处理。这是代码:

.gitignore