python:使用faulthandler有不利之处吗?

Stu*_*erg 14 python

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

默认情况下不启用该模块.它启用如下:

import faulthandler
faulthandler.enable()
Run Code Online (Sandbox Code Playgroud)

此功能非常有用.是否有任何特殊原因未默认启用?它对性能有任何负面影响吗?

hay*_*ypo 24

此功能非常有用.是否有任何特殊原因未默认启用?它对性能有任何负面影响吗?

原因是faulthandler会记住stderr的文件描述符,通常是fd 2.问题是fd 2可能变成别的东西,比如socket,pipe,一个重要文件等.没有可靠的方法来检测这种情况,因此,在Python中默认不启用faulthandler更安全.

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

注意:我写了faulthandler.