我有这个脚本,但是我一次只想启动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的concurrent.futures
模块-它具有“进程池”的图,该图将仅自动保留这么多的工作进程,并在较旧的任务完成时启动新任务。
作为目标函数,放置一个简单的Python函数以打开您的外部进程,并同步等待结果-该函数具有concurrent.futures
循环中当前的行。
使用current.futures,您的代码可能看起来像这样:
for