如何在不终止父进程的情况下中断失控的ipython计算?

3 投票
1 回答
3129 浏览
提问于 2025-04-17 15:38

有时候,正在运行的 ipython 评估可能对你按下的一个或多个 Ctrl-C 没有反应1

有没有其他方法可以强制 ipython 进程中止当前的评估,回到“读取”状态呢?

比如用 kill -SOMESECRETSIGNAL <pid> 命令?我试过一些信号(比如 SIGINTSIGTERMSIGUSR1 等等),但都没用:要么没有效果(比如 SIGINT),要么直接杀掉了 ipython 进程。或者可能有什么复杂的 ipython 配置?或者某个特定的文件?……?

1这里的“及时”是指足够快。当然,具体多快算“及时”是无法准确说明的;这取决于情况、延迟的可靠性、用户的脾气、Hacker News 上的新闻等等。

1 个回答

1

这要看你打断程序执行的地方,比如是在你写的Python函数里,还是在某个底层库里。如果你经常在自己写的函数里打断程序,可以试着在这个函数里加一个try/except块,来捕捉KeyboardInterrupt这个异常。这样做可能无法让你从底层库中退出(如果你确实是在那儿运行的话),但应该能防止ipython解释器直接退出。

撰写回答