Python优化(-O或PYTHONOPTIMIZE)是做什么的?
文档只是说,Python解释器执行“基本优化”,而不会涉及任何细节。 显然,它是依赖于实现的,但有什么方法可以让我们了解哪些types的东西可以优化,以及可以产生多less运行时间节省?
使用-O有什么不好的地方吗?
我所知道的唯一的事情就是-O禁用assert
,但是大概不应该使用assert
来表示在生产中可能会出错的东西。
在Python 2.7中, -O
具有以下效果:
- 字节码扩展更改为
.pyo
- sys.flags.optimize被设置为1
-
__debug__
是假的 - 断言不会被执行
另外-OO
具有以下效果:
- sys.flags.optimize被设置为2
- 文档string不可用
要validation不同版本的CPython的效果,请grep Py_OptimizeFlag
的源代码。
链接到官方文档: https : //docs.python.org/2.7/tutorial/modules.html#compiled-python-files