Python:从同一个Interpreter同时执行多个脚本

时间:2010-02-01 10:44:34

标签: python

我有一个 python脚本,它再次执行 4-5 python脚本。 出于性能原因,我想使用相同的解释器来执行所有脚本。

我该如何处理这个问题?

5 个答案:

答案 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_pathrunpy.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')