首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >等待后引发未来的TypeError

等待后引发未来的TypeError
EN

Stack Overflow用户
提问于 2019-03-23 23:04:51
回答 1查看 5.7K关注 0票数 8

我正在尝试使用并行处理在一些现有代码中优化一个代价高昂的操作。我以前也使用过concurrent.futures,但只有在它们不返回任何内容的情况下才会这样做。

这一次我想封送结果,但当打印我的集合时,我得到了类似于<Future at 0x... state=finished raised TypeError>的每个未来的状态。谁能解释一下我做错了什么?

代码语言:javascript
运行
复制
import concurrent.futures

with concurrent.futures.ProcessPoolExecutor() as executor:

  def _future(self) -> None:
    print("here")

  futures = []
  for number in list(range(0,100)):
    future = executor.submit(_future)
    futures.append(future)

  finished = concurrent.futures.wait(futures, 5)
  print(finished)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-23 23:13:22

您的_future函数只接受一个参数,但是您的executor.submit没有向它传递任何参数。例如,您应该将number作为参数传递给它:

代码语言:javascript
运行
复制
for number in list(range(0,100)):
    future = executor.submit(_future, number)
    futures.append(future)

另一方面,由于您将_future的一个参数命名为self,这意味着您希望它成为一个类的实例,在这种情况下,您应该在原始的、未最小化的代码中将适当的实例对象传递给它。

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

https://stackoverflow.com/questions/55315109

复制
相关文章

相似问题

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