【问题标题】:Could not terminate process when use paramiko for command execution使用 paramiko 执行命令时无法终止进程
【发布时间】:2016-02-08 14:05:28
【问题描述】:

我有一个执行远程命令的 python 脚本,我想在其中使用多处理。

我设法让程序本身工作,但是当尝试使用 CTRL+C 中断它时,我得到以下异常,并且程序没有终止正确:

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

我做错了什么?

【问题讨论】:

标签: python multiprocessing paramiko pool


【解决方案1】:

CTRL+CSIGINT 发送到python 进程,这会触发KeyboardInterrupt 异常。在这里,您的父进程遇到了这个异常,并且由于您没有捕获它,它以及它的子进程都会残酷地退出。

如果你想处理CTRL+C,你需要在你的父进程中捕获这个KeyboardInterrupt异常。例如,this answer 中给出了一个示例。如果您分享您的代码,我们可能会找到更适合您的情况的代码。

【讨论】:

    最近更新 更多