【问题标题】:python: Is there a downside to using faulthandler?python: 使用 faulthandler 有缺点吗?
【发布时间】:2014-02-12 16:34:11
【问题描述】:

Python 3.3 包含一个名为 faulthandler 的模块,如果发生段错误,它会显示有用的回溯信息。 (对于3.3之前的Python版本,模块可以是obtained from PyPI。)

默认情况下不启用该模块。它是这样启用的:

import faulthandler
faulthandler.enable()

这个功能非常有用。默认情况下没有启用它有什么特别的原因吗?它对性能有任何负面影响吗?

【问题讨论】:

  • 它改变了程序的行为,即默认情况下启用它是一种向后不兼容的改变,尽管这是一个很好的改变。仍然可能存在依赖于当前行为的程序,并且在使用 faulthandler 时可能会中断。请注意,如果您愿意,可以通过命令行选项启用该模块。

标签: python python-3.x python-3.3 traceback faulthandler


【解决方案1】:

这个功能非常有用。有什么特别的原因吗? 默认启用?它对性能有任何负面影响吗?

原因是faulthandler记住了stderr的文件描述符,一般是fd 2。问题是fd 2可能变成别的东西,像socket,管道,重要文件等,没有可靠的方法检测在这种情况下,因此在 Python 中默认不启用故障处理程序会更安全。

faulthandler 在几乎所有情况下都是安全的,除非由 faulthandler 存储的文件描述符被替换。文档中还描述了问题: https://docs.python.org/dev/library/faulthandler.html#issue-with-file-descriptors

注意:我写了故障处理程序。

【讨论】:

    猜你喜欢
    • 2011-11-05
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 2020-08-07
    相关资源
    最近更新 更多