如何在使用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传递给该进程。让这个过程杀死主脚本。我已经试过了,效果很好。

可能重复: