我有一个 python脚本,它再次执行 4-5 python脚本。 出于性能原因,我想使用相同的解释器来执行所有脚本。
我该如何处理这个问题?
答案 0 :(得分:8)
明显的解决方案(可能需要稍微调整)就是从主脚本调用每个脚本的主要功能。例如,如果script1.py包含:
#!/usr/bin/python
def main():
// Do something
if __name__ == "__main__":
main()
放入master.py
#!/usr/bin/python
import script1
def main():
script1.main()
if __name__ == "__main__":
main()
您可以根据需要继续使用此模式。
答案 1 :(得分:3)
也许你正在寻找Python 2.x中的execfile
函数。
在Python 3中,它已删除,但there are simple alternatives。
答案 2 :(得分:1)
我写了一个包来从同一个解释器执行多个脚本(顺序不同时)。
<强>安装强>:
pip install mand
<强>用法强>:
mand script1.py script2.py script3.py script4.py
您可以指定模块路径或模块名称。
您可以在同一时间运行脚本&#39;在使用
runpy stdlib模块(用于python3)和threading stdlib模块。在单独的线程中调用runpy.run_path
或runpy.run_module
的情况,但如果模块是IO绑定而不是CPU绑定,则只会看到性能优势。
使用多处理或os.system将为每个脚本生成单独的解释器,因此模块不会在同一个解释器中运行。
答案 3 :(得分:0)
sys.executable
中提供了当前正在执行的解释程序。您可以将它明确地传递给subprocess.Popen作为第一个参数,或者将其作为“可执行”参数传递。
答案 4 :(得分:0)
我不认为这是推荐的,但最糟糕的情况是你可以让系统从另一个脚本中“运行”每个脚本:
import os
os.system('python script1.py')
os.system('python script2.py')
os.system('python script3.py')
os.system('python script4.py')