Python:当KeyboardInterrupt转发到多处理子进程时?

时间:2013-01-01 21:35:54

标签: python windows windows-8 64-bit multiprocessing

我在Windows上执行了以下测试代码:

import multiprocessing
import time

def child() :
  while True :
    time.sleep( 2 )

if __name__ == '__main__' :
  multiprocessing.Process( target = child ).start()
  while True :
    time.sleep( 1 )

如果我在Ctrl-C工作时按KeyboardInterrupt,我会看到两个 sleep( 1 )例外 - 一个用于sleep( 2 ),另一个用于process。如何将主process中的键盘中断转发给子{{1}}?毕竟它们是进程,而不是线程:(。

1 个答案:

答案 0 :(得分:1)

当进程catches the SIGINT signal指示a keyboard interrupt时(按ctrl + c),会抛出KeyboardInterrupt异常。

在Unix / Linux系统中,SIGINT信号被发送到整个foreground process group,其中包括父进程及其子进程。