2012-07-16 60 views
2

可能重複上一個KeyboardInterrupt停止執行:
Keyboard Interrupts with python's multiprocessing Pool如何同時使用multiprocessing.Pool #python

Python的多模塊有一些所謂的游泳池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。請提出解決方法。

+1

可能的重複:http://stackoverflow.com/q/1408356/748858 – mgilson 2012-07-16 13:22:36

+0

是的,它似乎是這樣。 – 2012-07-17 06:17:25

回答

1

我也遇到過這個問題。一個可能的解決方案(一個骯髒的)可以產生另一個進程並將該進程傳遞給主腳本的PID。讓該進程殺死主腳本。我已經嘗試過,它對我來說工作正常。

相關問題