因此,我設置了一個執行外部程序(用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個實例?
遠比我的建議更短,更好 – innoSPG
哇多麼乾淨的解決方案。我應該早些進入Python。謝謝! –