【发布时间】:2011-06-14 05:01:24
【问题描述】:
文档只说 Python 解释器执行“基本优化”,没有详细说明。显然,它依赖于实现,但有什么方法可以了解可以优化哪些类型的东西,以及它可以节省多少运行时间?
使用 -O 有什么缺点吗?
我唯一知道的是 -O 会禁用 assert,但大概不应该将 assert 用于生产中仍然可能出错的事情。
【问题讨论】:
标签: python optimization python-3.x
文档只说 Python 解释器执行“基本优化”,没有详细说明。显然,它依赖于实现,但有什么方法可以了解可以优化哪些类型的东西,以及它可以节省多少运行时间?
使用 -O 有什么缺点吗?
我唯一知道的是 -O 会禁用 assert,但大概不应该将 assert 用于生产中仍然可能出错的事情。
【问题讨论】:
标签: python optimization python-3.x
在 Python 2.7 中,-O 具有以下效果:
.pyo
__debug__ 是假的另外-OO还有以下作用:
要验证不同版本的 CPython 的效果,请用 grep 查找 Py_OptimizeFlag 的源代码。
官方文档链接:https://docs.python.org/2.7/tutorial/modules.html#compiled-python-files
【讨论】:
assert 用于执行逻辑功能,而不是仅仅声明代码中某个点的不变期望,因此任何类似的代码也会中断。
__debug__ 不只是更改为False,if __debug__ 下的任何代码都被完全删除。