0
我有一個包含需要運行的文件列表的目錄。這些都是很繁重的計算任務,所以我正在尋找在任務提交once.My第一功能運行多個文件,最好的辦法是:立即通過python運行多個可執行文件
def copasiSE_batch_run(self):
os.chdir(self.IA_dir) #dir containing files
count=0
for i in glob.glob('*.cps'):
os.system('CopasiSE '+i)
count = count+1
print '\n\n\n {}:\tProfile liklihood for {} has been calcualted'.format(count,i)
這無關緊要,它的工作原理,但只使用一個進程,等待直到一個文件完成運行,然後運行下一個。由於這些是獨立的任務如果我能夠同時進行更多的工作,這將是一件好事。我然後嘗試:
def copasiSE_batch_run_subprocess(self):
os.chdir(self.IA_dir)
for i in glob.glob('*.cps'):
command='CopasiSE '+i
subprocess.Popen(command)
這也適用,但給我相反的問題。我有32個需要運行的文件,這個功能似乎一次運行它們,這樣我的電腦基本上無法使用,直到完成。在一次運行的程序數量之間找到一個好的平衡點,並且剩下足夠的計算機能量來執行一些相當低密集度的任務,最好的方法是什麼?
嗨喬納森,謝謝你的迴應。這是一個很好的解決方案,並且運行良好,但爲了完整起見,您是否知道是否有辦法限制正在運行的文件數量(例如)8,直到所有作業完成?歡呼聲 – CiaranWelsh
我可以給你一個想法,但我不知道如何用代碼表達它。你將不得不使用循環或條件語句。 while command.running> = 8:暫停腳本 – Jonathan