2

可能重复:
键盘中断与 python 的多处理池

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 手动终止它产生。请提出解决方法。

4

1 回答 1

1

我也遇到了这个问题。一个可能的解决方法(一个肮脏的)可以产生另一个进程并将主脚本的 PID 传递给该进程。让那个进程杀死主脚本。我已经尝试过了,它对我来说效果很好。

于 2012-07-16T14:13:28.387 回答