python线程和工人

时间:2018-12-23 21:23:18

标签: python multithreading

我是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)

2 个答案:

答案 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)