关于并行处理:一次通过python运行多个可执行文件

Running multiple executable files via python at once

本问题已经有最佳答案,请猛点这里访问。

我有一个目录,其中包含需要运行的文件列表。这些任务计算量很大,因此我正在寻找同时运行多个文件的最佳方法。任务提交的第一个功能是:

1
2
3
4
5
6
7
8
9
10
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 '


 {}:\tProfile liklihood for {}  has been calcualted'
.format(count,i)

这很好,而且可以工作,但只使用一个进程,等待一个文件运行完,然后运行下一个文件。因为这些都是独立的任务,所以如果我能在同一时间做更多的事情,那就更好了。然后我试着:

1
2
3
4
5
def copasiSE_batch_run_subprocess(self):
    os.chdir(self.IA_dir)
    for i in glob.glob('*.cps'):
        command='CopasiSE '+i
        subprocess.Popen( command)

这也有效,但给了我相反的问题。我有32个文件需要运行,这个函数似乎一次运行它们,所以我的计算机基本上是不可用的,直到它完成。在一次运行的程序数量和有足够的计算机电源来完成一些相当低强度的任务之间找到一个良好平衡的最佳方法是什么?


输入时间并使用时间。睡眠(60)。如果您在for循环中使用合理的参数时间,可以减少一次运行的进程数量,但一次仍有多个进程在运行。