Python:以负载平衡方式运行多个exe

时间:2018-07-05 13:27:33

标签: python exe

由于计算机资源的原因,我试图运行多个exe(其中12个),在性能下降之前,我一次最多可以生成4个。

我正在尝试查找是否有一次一次调用4个exe的方法,一旦其中一个完成,就调用另一个exe来填充释放的资源

我当前的代码可以做到这一点:

    excs = [r"path\to\exe\exe.exe",r"path\to\exe\exe.exe",r"path\to\exe\exe.exe",r"path\to\exe\exe.exe"]

    running = [subprocess.Popen(ex) for ex in excs]

    [process.wait() for process in running]

它将重复此过程3次,以便全部运行12个。不幸的是,这意味着它需要等待所有这些完成之后才能继续进行下一个设置。有更有效的方法吗?

为了记录,所有exe的运行时间都不同。

1 个答案:

答案 0 :(得分:0)

Python有ThreadPoolExecutor,这非常方便

import subprocess
from concurrent.futures import ThreadPoolExecutor

def create_pool(N,commands):
   pool = ThreadPoolExecutor(max_workers=N)
   for command in commands:
      pool.submit(subprocess.call, command)
   pool.shutdown(wait=False)
def main():
   N_WORKERS=4
   commands = [job1, job2, ...]
   create_pool(N_WORKERS, commands)