等待后未来引发 TypeError

Future raising TypeError after wait

我正在尝试使用并行处理优化某些现有代码中的昂贵操作。我过去曾用 concurrent.futures 这样做过,但只有当他们 return 什么都没有的时候。

这次我想整理结果,但是在打印我的 collection 时,我得到的每个未来的状态都类似于 <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)

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

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

另一方面,由于您将 _future 的一个参数命名为 self,这意味着您希望它成为 class 的一个实例,其中如果您应该在原始的非最小化代码中将正确的实例对象传递给它。