【发布时间】:2025-12-09 06:05:04
【问题描述】:
所以,我设置了一个简短的脚本来执行一个外部程序(用 Fortran 77 编写)。我想运行该程序的多个实例,因为我的计算机上有 8 个内核,所以我找到的最简单的解决方案是:
import subprocess
import os
i = n
while(i<n):
dire = "dir/Run"+str(i)+"/"
os.chdir(dire)
p1 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+1)+"/"
os.chdir(dire)
p2 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+2)+"/"
os.chdir(dire)
p3 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+3)+"/"
os.chdir(dire)
p4 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+4)+"/"
os.chdir(dire)
p5 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+5)+"/"
os.chdir(dire)
p6 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+6)+"/"
os.chdir(dire)
p7 = subprocess.Popen(['./mej'])
dire = "dir/Run"+str(i+7)+"/"
os.chdir(dire)
p8 = subprocess.Popen(['./mej'])
dire = "/Run"+str(i+8)+"/"
os.chdir(dire)
p3 = subprocess.Popen(['./mej'])
exit_codes = [p.wait() for p in p1, p2, p3, p4, p5, p6, p7, p8]
i = i + 8
print "Job's done!"
现在这最初工作得很好,但是我只是更改为可变时间步长,因此每次集成运行的时间差异很大。现在的问题是脚本将等待最慢的脚本完成,然后再启动一组新的集成。我如何编写它以便始终运行 8 个实例?
【问题讨论】:
标签: python subprocess external-process