可能重复:
Keyboard Interrupts with python's multiprocessing Pool
Python的多处理模块有一个名为Pool http://docs.python.org/library/multiprocessing.html#module-multiprocessing.pool
的东西当一个进程池正在运行时,我无法使用KeyboardInterrupt(即Ctrl + c)终止脚本。该池产生新的进程,唯一的出路是ctrl + z,然后手动杀死它们。
以下是我尝试测试它的脚本:
import multiprocessing
import random
import time
def sometask(arg):
#do something nasty to arg
time.sleep(arg)
return random.randint(0,arg)
if __name__=="__main__":
pool = multiprocessing.Pool(processes=4)
print pool.map(sometask, range(10))
我的主脚本试图做一些比time.sleep()更耗时的事情,每次我尝试测试运行它时,我必须等待它完成或手动杀死它首先找到id它产生的过程。请建议一个解决方法。
答案 0 :(得分:1)
我也遇到了这个问题。一个可能的解决方法(一个脏的)可以产生另一个进程并将该进程传递给主脚本的PID。让该进程终止主脚本。我试过这个,它对我来说很好。