kku*_*sik 32 python optimization
我似乎无法找到一个简单的解释,说明在运行-O或优化标志时python的作用有何不同.
Ale*_*lli 28
assert语句被完全消除,表单的语句块也是if __debug__: ...如此(因此您可以将调试代码放在这样的语句块中,并运行-O以避免调试代码).
随着-OO,另外,文档字符串也被淘汰.
ire*_*ses 24
来自文档:
使用-O标志调用Python解释器时,会生成优化代码并将其存储在.pyo文件中.优化器目前没有多大帮助; 它只删除断言语句.当使用-O时,所有字节码都被优化; .pyc文件被忽略,.py文件被编译为优化的字节码.
将两个-O标志传递给Python解释器(-OO)将导致字节码编译器执行优化,在某些极少数情况下可能导致程序出现故障.目前只
__doc__从字节码中删除字符串,从而产生更紧凑的.pyo文件.由于某些程序可能依赖于这些程序可用,因此如果您知道自己在做什么,则应该只使用此选项.从.pyc或.pyo文件读取程序时,程序运行速度不比从.py文件读取时运行速度快; 关于.pyc或.pyo文件,唯一更快的是它们加载的速度.
换句话说,几乎没有.
正如在python优化模式中所回答:
python -O目前执行以下操作:
__debug__为False(默认情况下为True)当被称为python -OO时
我不知道为什么每个人都忘记提到这个__debug__问题; 也许是因为我是唯一一个使用它的人:)一个if __debug__构造在运行时根本不创建字节码-O,我发现它非常有用.