【问题标题】:Future raising TypeError after wait等待后未来提高 TypeError
【发布时间】:2019-08-14 08:31:04
【问题描述】:

我正在尝试使用并行处理优化某些现有代码中的昂贵操作。我过去曾使用concurrent.futures 这样做,但只有当他们没有返回任何东西时。

这一次我想整理结果,但是在打印我的收藏时,我得到的每个未来的状态都类似于<Future at 0x... state=finished raised TypeError>。谁能解释我做错了什么?

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)

【问题讨论】:

    标签: python concurrent.futures


    【解决方案1】:

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

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

    另一方面,由于您将_future 的一个参数命名为self,这意味着您打算将其作为类的实例,在这种情况下,您应该将正确的实例对象传递给它在您的原始非最小化代码中。

    【讨论】:

    • 啊!是的,我对属于类结构的一些现有代码感到困惑,这解决了我的问题。谢谢!
    猜你喜欢
    • 2020-08-11
    • 1970-01-01
    • 2021-03-26
    • 2015-01-07
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多