我有一个目录,其中包含需要运行的文件列表。这些是计算量很大的任务,所以我正在寻找一次运行多个文件的最佳方法。我的第一个任务提交功能是:
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个文件需要运行,这个函数似乎一次运行它们,所以我的计算机基本上无法使用,直到它完成。什么是在一次运行的程序数量和剩余足够的计算机能力来完成一些合理的低密集任务之间找到良好平衡的最佳方法?
答案 0 :(得分:1)
导入时间并使用time.sleep(60)。如果你在参数中使用合理的时间将它放在for循环中,你可以减少一次运行的进程数量,但是仍然有多个进程一次运行。