2016-02-08 61 views
0

我有一個執行遠程命令的python腳本,我想在其中使用多處理。使用paramiko執行命令時無法終止進程

我設法讓自己的工作程序,但是嘗試使用CTRL中斷它時, + Ç,我得到下面的異常,並且程序沒有正確終止:

Traceback (most recent call last): 
    File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap 
    self.run() 
    File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run 
    self._target(*self._args, **self._kwargs) 
    File "/usr/lib/python2.7/multiprocessing/pool.py", line 102, in worker 
    task = get() 
    File "/usr/lib/python2.7/multiprocessing/queues.py", line 376, in get 
    return recv() 
KeyboardInterrupt 
Caught KeyboardInterrupt, terminating workers 

我究竟做錯了什麼?

+0

試圖重寫問題以便於理解。還有一些格式化 –

+0

[類似問題](http://stackoverflow.com/questions/11312525/catch-ctrlc-sigint-and-exit-multiprocesses-gracefully-in-python) –

回答

0

CTRL + Ç發送SIGINT到蟒過程,這將觸發一個KeyboardInterrupt異常。在這裏,你的父進程遇到了這個異常,並且由於你沒有捕獲它,所以它和它的孩子一樣殘酷地退出。

如果你想處理CTRL +Ç,你需要抓住這個KeyboardInterrupt例外在你的父進程。例如在this answer中給出了一個例子。如果你分享你的代碼,我們可能會發現一些更具體的案例。