首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ThreadPoolExecutor线程数

ThreadPoolExecutor线程数
EN

Stack Overflow用户
提问于 2014-03-14 01:34:30
回答 1查看 3.7K关注 0票数 3

我正尝试在Python语言中使用futures backport包中的ThreadPoolExecutor。然而,问题是所有线程都是同时执行的,因此不会发生实际的池化。更具体地说,我得到了该函数的10个线程,而不是5个线程,然后是其他线程。我使用下面的代码,你是发现了什么错误,还是仅仅是后端口的实现?谢谢!

代码语言:javascript
复制
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())
EN

回答 1

Stack Overflow用户

发布于 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+,或者出于其他内部优化的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22386487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档