相关疑难解决方法(0)

键盘中断python的多处理池

如何使用python的多处理池处理KeyboardInterrupt事件?这是一个简单的例子:

from multiprocessing import Pool
from time import sleep
from sys import exit

def slowly_square(i):
    sleep(1)
    return i*i

def go():
    pool = Pool(8)
    try:
        results = pool.map(slowly_square, range(40))
    except KeyboardInterrupt:
        # **** THIS PART NEVER EXECUTES. ****
        pool.terminate()
        print "You cancelled the program!"
        sys.exit(1)
    print "\nFinally, here are the results: ", results

if __name__ == "__main__":
    go()
Run Code Online (Sandbox Code Playgroud)

当运行上面的代码时,KeyboardInterrupt当我按下时会引发上升^C,但是该过程只是挂起,我必须在外部杀死它.

我希望能够随时按下^C并使所有进程正常退出.

python pool multiprocessing keyboardinterrupt

127
推荐指数
8
解决办法
7万
查看次数

标签 统计

keyboardinterrupt ×1

multiprocessing ×1

pool ×1

python ×1