2016-02-08 57 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中给出了一个例子。如果你分享你的代码,我们可能会发现一些更具体的案例。