我正在尝试使用并行处理来优化某些现有代码中的昂贵操作。过去,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)
答案 0 :(得分:4)
您的_future
函数使用一个参数,但是您的executor.submit
没有向其传递任何参数。例如,您应该传递number
作为其参数:
for number in list(range(0,100)):
future = executor.submit(_future, number)
futures.append(future)
另一方面,由于您将_future
的一个参数命名为self
,这意味着您打算将其作为类的实例,在这种情况下,应将其传递给它。您的原始非最小化代码中正确的实例对象。