如何在使用multiprocessing.Pool#python时停止键盘中断执行
可能重复:如何在使用multiprocessing.Pool#python时停止键盘中断执行,python,multiprocessing,keyboardinterrupt,Python,Multiprocessing,Keyboardinterrupt,可能重复: Python的多处理模块有一个叫做池的东西 当一个进程池正在运行时,我无法使用键盘中断(即Ctrl+c)使脚本终止。该池生成新进程,唯一的退出方法是ctrl+z,然后手动终止它们 下面是我尝试测试它的脚本: import multiprocessing import random import time def sometask(arg): #do something nasty to arg time.sleep(arg) return random.r
Python的多处理模块有一个叫做池的东西 当一个进程池正在运行时,我无法使用键盘中断(即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手动终止它。请提出解决办法。我也面临这个问题。一个可能的解决方法(脏的)可以是生成另一个进程并将主脚本的PID传递给该进程。让这个过程杀死主脚本。我已经试过了,效果很好。可能重复: