Python是不是应该崩溃?
Posted
技术标签:
【中文标题】Python是不是应该崩溃?【英文标题】:Is Python ever supposed to crash?Python是否应该崩溃? 【发布时间】:2011-11-29 11:38:33 【问题描述】:我在 Windows 上运行一个独立的 Python v3.2.2/Tkinter 程序,不调用任何外部库。 Idle 在报告异常方面非常有帮助,程序已经调试到不报告异常的地步。然而,python 解释器偶尔会在不确定的时间崩溃——操作会运行一段时间,然后突然挂起。崩溃触发标准 Windows 无响应进程对话框,询问我是否要向 Microsoft 发送崩溃转储:
"pythonw.exe has encountered a problem and needs to close.
We are sorry for the inconvenience."
Crash reporting in Python 表示解释器本身很少崩溃。我的问题是:无论python脚本中有多少错误,理论上有什么方法可以使解释器崩溃吗?由于没有报告异常并且崩溃是随机发生的,因此很难缩小范围。但是如果解释器理论上应该是防崩溃的,那么我正在做的事情就是触发一个错误。
代码(滚动条形图演示)发布在What is the best real time plotting widget for wxPython?。它有 3 个按钮 - 运行、停止、重置。要导致崩溃,只需按随机顺序按下按钮一分钟左右。无需交互,演示将永远运行而不会崩溃。
【问题讨论】:
这取决于脚本。纯 python 应该是安全的,并且通常会非常重视崩溃。但是根据您使用的模块(想想 ctypes),Python 越来越难以避免任何问题。 我认为实际上没有任何东西可以在计算机系统上运行 100% 保证永不崩溃!有错请指正。 套用道格拉斯·亚当斯的话说:可能崩溃的软件和不可能崩溃的软件之间的主要区别在于,当不可能崩溃的软件崩溃时,它通常无法获得或修复。 【参考方案1】:当然,我们的目标是让 Python 之类的东西永远不会崩溃。唉,我们生活在一个不完美的世界。我认为,一个更有用的问题是“如果 Python 崩溃了我该怎么办?”。如果你想帮助创造一个更完美的世界,首先在Python issue tracker 上进行快速搜索,看看是否已经报告了类似的问题,并且可能在更新或尚未发布的 Python 版本中得到修复。如果没有,看看你是否能找到一种方法来重现问题,并明确说明所涉及的步骤、什么操作系统平台和版本、什么版本的 Python 和第 3 方库(如果适用)。然后打开一个包含所有详细信息的新问题。请记住,与许多开源项目一样,Python 是一个全自愿项目,因此无法保证何时或是否会更深入地调查或解决问题(大多数问题最终都会得到解决),但您可以很高兴您已经尽了自己的一份力量,并可能为某人(也许很多人)节省了时间和麻烦。如果您在打开问题之前需要其他意见,可以在python-list mailing list/news group 上询问。
【讨论】:
【参考方案2】:Python 确实不是 100% 防崩溃的,尤其是当您使用外部库时,TkInter 就是这样。
甚至还有专门的页面:http://wiki.python.org/moin/CrashingPython
【讨论】:
需要明确的是,Tkinter
不是外部库:它是 Python 标准库的一部分。但是,Tkinter
确实链接并使用了Tcl
和Tk
,它们 是外部第 3 方组件。以上是关于Python是不是应该崩溃?的主要内容,如果未能解决你的问题,请参考以下文章
MatplotLib (TKinter) + OpenCV 在 Python 3 中崩溃