ThreadPoolExecutor线程数

时间:2014-03-13 17:34:30

标签: python multithreading thread-safety threadpoolexecutor concurrent.futures

我正在尝试使用期货后端程序包在Python中使用ThreadPoolExecutor。但是,问题是所有线程都在同一时间执行,因此不会发生实际的池化。更具体地说,我获得该函数的10个线程而不是5个,然后是其他线程。我使用下面的代码你发现了什么错误,或者只是向后移植的实现? 谢谢!

with ThreadPoolExecutor(max_workers=5) as executor:
    futures = [executor.submit(f, X, y) for t in range(10)]
    for future in as_completed(futures):
        self.trees.append(future.result())

1 个答案:

答案 0 :(得分:0)

在文档中说,每个工人通常有多个线程:

https://docs.python.org/3/library/concurrent.futures.html

版本3.5中的更改:如果max_workers为None或未给出,它将默认为计算机上的处理器数乘以5,假定ThreadPoolExecutor通常用于重叠I / O而不是CPU工作和数量的工人人数应高于ProcessPoolExecutor的工人人数。

可能不是默认的5乘数,因为您使用的版本不是3.5+或其他内部优化原因。