有一个Python脚本start_test.py
。
还有第二个python脚本siple_test.py
。
# pseudo code:
start_test.py --calls--> subprocess(python.exe simple_test.py, args_simple_test[])
两个脚本的python解释器是相同的。因此,我不想打开新实例,而是直接从simple_test.py
运行start_test.py
。我需要保留sys.args环境。一个不错的实际上是在simple_test.py
中输入以下代码部分:
# file: simple_test.py
if __name__ == '__main__':
some_test_function()
最重要的是,该方式应该是通用的,而不取决于simple_test.py
的内容。
此设置将提供两个好处:
simple_test.py
的整个堆栈那么,如何在不启动新子流程的情况下从python脚本执行python脚本的调用?
答案 0 :(得分:1)
“执行脚本”是一个模糊的术语。
通常,if __name__== "__main__":
部分执行参数(sys.argv
)解码,然后使用显式参数调用辅助函数。为了清楚起见:它不应做任何其他事情,因为如果不创建新进程就无法调用此额外工作,从而导致您要避免的所有开销。
您只需绕过它,然后直接调用此实现例程即可。
所以您最终得到包含以下内容的start_test.py:
from simple_test import worker
# ...
worker(typed_arg1, typed_arg2)