有没有办法从另一个python(Python3)脚本以优化模式运行python脚本
如果我有以下test.py
脚本(读取built-in constant ^{
if __debug__:
print('Debug ON')
else:
print('Debug OFF')
然后:
python text.py
打印Debug ON
python -OO text.py
打印Debug OFF
因为constant ^{
This constant is true if Python was not started with an
-O
option. See also theassert
statement.
此外,运行时不能更改__debug__
的值:__debug__
是一个常量,如文档here和here中所述。__debug__
的值是在Python解释器启动时确定的
以下内容正确打印“调试关闭”
import subprocess
subprocess.run(["python", "-OO", "test.py"])
但是有没有一种更类似于Python的方式呢?
如果不调用python
解释器,那么上面的代码似乎不是很容易移植
我已经在这里和网上搜索过了
使用
compile
我使用内置函数^{} 提出了一个解决方案,如下所示
文件
main.py
的内容:文件
test.py
的内容:运行
python main.py
的输出是:参数
optimize
的可能值:-1
:使用与运行函数的Python解释器相同的优化级别compile
0
:没有优化,和__debug__ == true
1
:与-O
类似,即删除assert
语句和__debug__ == false
2
:与{不知道这是否是最好的选择,只是分享是否对其他人有用
使用
subprocess.run
基于} 进行移植:
subprocess
的方法更加简洁,可以通过使用^{上面的代码调用函数^{}
检查变量
sys.executable
的值是由CPython的documentation引起的:检查是用} 或^{} 或环境变量^{}
raise
语句而不是assert
语句来实现的,以便在上述Python代码本身使用Python请求的优化运行的情况下也进行检查,例如,通过使用^{When optimization is requested, ^{} statements are removed
使用}
raise
语句还可以引发除AssertionError
之外的异常,在本例中是^{对于在同一源文件内的函数内运行Python代码(即在} 可以与option ^{} of ^{} 一起使用
main.py
内,而不是在test.py
内),函数^{顺便说一句,欢迎更好的答案
相关问题 更多 >
编程相关推荐