我必须编写一个处理大量文件的Python脚本。 我编写了一个在其上运行的for循环,读取每个文件并对其进行一些更改。 我需要每次处理一些文件,并考虑线程。
我想要正负20个线程,每个线程每次都会处理一个文件。 当线程从他的文件进程释放时,它将获得另一个文件(换句话说,For循环将它获取的每个文件发送到自由线程并继续运行)。 我怎么能这样做?
答案 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
基本相同,但使用线程而不是进程。