CTRL-C引起forrtl: error (200)的问题,而不是Python KeyboardInterrupt异常

13

我正在尝试做与此问题完全相同的事情:

如何在Python中防止键盘中断打断一段代码块? (抱歉,我还没有足够的声望在那里发布评论)

但是,那里发表的两个最佳答案都不能满足我的需求。当我使用其中任意一个解决方案时按下 CTRL+C 后,脚本仍会立即关闭,并出现以下提示:

forrtl: error (200): program aborting due to control-C event

我正在处理的代码非常长,包含了相当多的导入模块。我是否正确地假设其中一个模块干扰了 KeyboardInterrupt 的正常行为?如果是这样的话,我应该如何找出是哪一个模块造成了问题?

(我在Windows上运行python 2.7.6 32位版本)

谢谢。

2个回答

7

4周的调试,现在我学到了问题出在scipy.signal import savgol_filter这个愚蠢的地方。找到了比链接中更优雅的解决方案:只需将scipy导入放在一个函数内,就可以使您的main足够安全。 - Alex Deft

0

除了上述特定情况(问题和上面的答案)之外,对于仍然困在这种情况下的人

forrtl: error (200): program aborting due to control-C event

尝试在程序执行期间(在我的情况下,是在Windows 10上的PyCharm IDE中执行的带有PyTorch的神经网络模型训练过程中)获得CTRL+C KeyboardInterrupt 的正常行为。

结果发现这是一个anaconda环境或其中某个包损坏的问题。对我来说,重新安装 PyCharm 的旧版本(从2022降级到2021)并将旧环境 替换为全新的环境 解决了问题。 KeyboardInterrupt 恢复了其旧有的有用行为,即在CTRL+C事件时停止程序但不退出python控制台。

希望能对某些人有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接