我正尝试在Python语言中使用futures backport包中的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())发布于 2020-07-03 19:22:06
在文档中,它说每个worker通常有多个线程:
https://docs.python.org/3/library/concurrent.futures.html
版本3.5中的更改:如果max_workers为None或未给定,它将默认为机器上的处理器数量,乘以5,假设ThreadPoolExecutor经常用于重叠I/O,而不是CPU工作,并且工作进程的数量应该高于ProcessPoolExecutor的工作进程数量。
它可能不会默认为5乘数,因为您使用的版本不是3.5+,或者出于其他内部优化的原因。
https://stackoverflow.com/questions/22386487
复制相似问题