【发布时间】:2016-06-17 13:42:17
【问题描述】:
我有一个目录,其中包含需要运行的文件列表。这些是计算量很大的任务,所以我正在寻找一次运行多个文件的最佳方法。我的第一个任务提交函数是:
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 个文件需要运行,这个功能似乎可以一次运行它们,所以我的计算机在完成之前基本上无法使用。在一次运行的程序数量和剩余足够的计算机能力以执行一些相当低强度的任务之间找到良好平衡的最佳方法是什么?
【问题讨论】:
标签: python parallel-processing subprocess multiprocessing