我正在计划 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 的标准输出。
这是我想做的粗略计划,这是否可能,或者我是否需要重新考虑整个概念?
答案 0 :(得分:2)
您可以使用multiprocessing.Pool
或multiprocessing.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个)