如何限制并行进程

问题描述 投票:0回答:1

我有这个脚本,但是我一次只想启动3个perl进程。完成这三个步骤后,脚本应从下三个开始。

目前所有进程并行启动

不幸的是,我不知道该怎么办。有人可以帮助我吗?

我的脚本:

import json, os
import subprocess
from subprocess import Popen, PIPE

list = open('list.txt', 'r')


procs = []
for dirs in list:
    args = ['perl', 'test.pl', '-a', dirs]
    proc = subprocess.Popen(args)
        procs.append(proc)

for proc in procs:
   proc.wait()

list.txt:

dir1
dir2
dir3
dir4
dir5
dir6
dir7
dir8
dir9
dir10
dir11
python-3.x
1个回答
1
投票

使用Python的concurrent.futures模块-它具有“进程池”的图,该图将仅自动保留这么多的工作进程,并在较旧的任务完成时启动新任务。

作为目标函数,放置一个简单的Python函数以打开您的外部进程,并同步等待结果-该函数具有concurrent.futures循环中当前的行。

使用current.futures,您的代码可能看起来像这样:

for
© www.soinside.com 2019 - 2024. All rights reserved.