是否可以在脚本中设置python -O(optimize)标志?

时间:2011-09-23 09:42:53

标签: python optimization runtime assert conditional-compilation

我想根据脚本的命令行参数(例如python -O myscript.py或{{}在python脚本中的运行时设置优化标志(myscript.py --optimize) 1}}。我想跳过myscript --no-debug语句,而不是把它们全部丢掉。或者是否有更好的方法来有效地忽略python代码的各个部分。在C ++中是否有assert#if的python等价物?

2 个答案:

答案 0 :(得分:12)

-O是一个编译器标志,你不能​​在运行时设置它,因为那时脚本已经被编译过了。

Python与#if等编译器宏没有任何可比性。

只需编写一个设置这些标志的start_my_project.sh脚本。

答案 1 :(得分:7)

#!/usr/bin/env python
def main():
    assert 0
    print("tada")

if __name__=="__main__":
   import os, sys
   if '--optimize' in sys.argv:
      sys.argv.remove('--optimize')
      os.execl(sys.executable, sys.executable, '-O', *sys.argv)
   else:
      main()