保持可变数量的子进程不断运行

时间:2014-09-30 13:39:15

标签: python list subprocess

我正在计划 some.exe 的子进程列表,例如

max_processes = 4
proc_list = []
for i in range(100):
    while len(proc_list) <= max_processes:
        proc_list.append(subprocess.Popen(["some.exe", i]))

流程应该在后台中运行, max_processes 的数量应该不断运行。不需要 some.exe 的标准输出。

这是我想做的粗略计划,这是否可能,或者我是否需要重新考虑整个概念?

1 个答案:

答案 0 :(得分:2)

您可以使用multiprocessing.Poolmultiprocessing.pool.ThreadPool

from multiprocessing import Pool
# OR  from multiprocessing.pool import ThreadPool as Pool
import subprocess

def run_some_exe(i):
    subprocess.call(['some.exe', i])

if __name__ == '__main__':
    max_processes = 4
    pool = Pool(max_processes)
    pool.map(run_some_exe, range(100))

mulitprocess.Pool.map的工作方式与map类似,只是它并行运行该函数。 (上例中最多4个)