主进程使用多处理过程(). 子进程还创建了自己的子进程。下面是示例代码:import multiprocessing
class MyClass(object):
def __init__(self, name):
self.name = name
def print_info(self):
proc_name = multiprocessing.current_process().name
print 'Consumer %s has producer %s' % (proc_name, self.name)
def consumer(q):
task = q.get()
task.print_info()
def producer():
queue = multiprocessing.Queue()
proc_name = multiprocessing.current_process().name
p = multiprocessing.Process(target=consumer, args=(queue,))
child_proc_name = p.name
print 'Producer %s has consumer %s' % (proc_name, child_proc_name)
p.start()
queue.put(MyClass(name=proc_name))
queue.close()
queue.join_thread()
p.join()
if __name__ == '__main__':
procs = []
for _ in range(5):
p = multiprocessing.Process(target=producer, args=())
p.start()
procs.append(p)
for p in procs:
p.join()
我的问题主要是在程序退出时出现问题时如何清理所有进程。问题可能是进程被信号终止,或者某些子进程得到异常。我基本上想清理所有进程,如果有任何进程因问题而终止。我用的是python2.7。在