等待后将来引发TypeError

时间:2019-03-23 15:04:51

标签: python concurrent.futures

我正在尝试使用并行处理来优化某些现有代码中的昂贵操作。过去,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)

1 个答案:

答案 0 :(得分:4)

您的_future函数使用一个参数,但是您的executor.submit没有向其传递任何参数。例如,您应该传递number作为其参数:

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

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