我正在尝试使用futures backport包在Python中使用ThreadPoolExecutor。然而,问题是所有线程都同时执行,因此实际上没有进行任何池化。更具体地说,我得到了10个该函数的线程,而不是5个然后是其他线程。我使用以下代码,请问有问题还是只是backport的实现问题? 谢谢!
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())
f
的数量不受max_workers
限制? - jfsf
中添加time.sleep(5)
以查看并非所有10个函数同时运行。 - jfsprint
是同时执行的。尝试使用python -u
(无缓冲)来执行,或者更好地,使用任务管理器来验证启动了多少个线程。 - Stefano Sanfilippo