我是python和线程技术的新手。我想知道是否有一种方法可以检查辅助线程的数量。例如,如果我有10个工作线程,则我想等待所有10个线程完成后再继续。我当前的程序正在逐行读取文件;因此,我不想不处理每一行而继续。
我的代码:
for line in file:
if ranges.strip("\n"):
''' I went for my code to check the number of workers and
if there are not 10 run the line and if there 10 wait for
them to finish and then do it'''
Mythread.run(line)
答案 0 :(得分:1)
听起来像multiprocessing
Pool
的工作,例如:
from multiprocessing import Pool
def myfn(s):
return len(s)
with open("input.txt") as file, Pool(10) as pool:
results = pool.map(myfn, line.strip() for line in file)
将使myfn
在每一行上执行,并安排结果很好地返回……
周围有很多陷阱,但是通常比自己做要容易!
答案 1 :(得分:0)
如果您不跟踪当前正在运行的线程,则可以这样做,虽然效率不高,但是应该可以完成工作。
import threading
for line in file:
if ranges.strip("\n"):
while len(threading.enumerate()) > 11:
pass
Mythread.run(line)