在IPython中,扩展可以处理内核中断吗?

时间:2013-09-25 00:36:03

标签: ipython

我正在编写一个带有单元格魔法的IPython扩展,它通过pexpect调用另一个可执行文件。它使这个可执行文件在后台运行,直到内核的生命周期。是否有某个钩子,以便在引发内核中断时发送此子进程Ctrl-C(例如,IPython Notebook中的“Interrupt Kernel”菜单选项)?

1 个答案:

答案 0 :(得分:2)

重新作为答案:

IPython通过发送SIGINT来中断内核,这是在终端中按Ctrl-C时触发的相同信号。因此,只要您想在自己的代码运行时捕获它,就可以捕获KeyboardInterrupt,如下所示:

p.sendline('some command')
try:
    p.expect(processing_finished_mark)
except KeyboardInterrupt:
    p.sendintr()