【问题标题】:Running multiple executable files via python at once [duplicate]一次通过python运行多个可执行文件[重复]
【发布时间】: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


    【解决方案1】:

    导入时间并使用 time.sleep(60)。如果你把它放在你的 for 循环中,并在参数中设置合理的时间,你可以减少一次运行的进程数量,但一次运行的进程仍然不止一个。

    【讨论】:

    • 您好乔纳森,感谢您的回复。这是一个很好的解决方案并且效果很好,但是为了完整起见,您是否碰巧知道是否有办法将一次运行的文件数限制为(例如)8 个,直到所有作业都完成?干杯
    • 我可以给你一个想法,但我不知道如何用代码表达它。您将不得不使用循环或条件语句。 while commands.running >= 8: 暂停脚本
    猜你喜欢
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多