Python" For"循环线程

时间:2015-05-10 13:47:42

标签: python multithreading loops

我必须编写一个处理大量文件的Python脚本。 我编写了一个在其上运行的for循环,读取每个文件并对其进行一些更改。 我需要每次处理一些文件,并考虑线程。

我想要正负20个线程,每个线程每次都会处理一个文件。 当线程从他的文件进程释放时,它将获得另一个文件(换句话说,For循环将它获取的每个文件发送到自由线程并继续运行)。 我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

使用ThreadPool,您可以创建一个线程池并在每个线程中执行一个函数。例如:

from multiprocessing.pool import ThreadPool

def _process(filename):
    # do something with filename
    pass

pool = ThreadPool(processes=20)
pool.map(_process, (filename for filename in ['f1', 'f2', 'f3']))
pool.close()

ThreadPool没有记录,但它与multiprocessing.Pool基本相同,但使用线程而不是进程。