【发布时间】:2013-08-21 11:13:01
【问题描述】:
我一直在使用以下方法在python中实现并行子进程:
pool = multiprocessing.Pool(processes=4)
pool.map_async(my_parallel_func ....)
pool.close()
pool.join()
这些任务将运行几分钟。而且我注意到在pool.join() 阻塞等待期间,我无法按 Ctrl+c 取消主脚本。如果我按Ctrl+c,我会得到一个堆栈打印,程序并没有停止,但它会变成一个僵尸进程。我必须手动杀死每个子进程。
如何让程序通过Ctrl+c退出,同时终止所有子进程?
【问题讨论】:
-
子进程必须被告知单独关闭。请参阅here 以获得一些指导。