我正在尝试使用并行处理在一些现有代码中优化一个代价高昂的操作。我以前也使用过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)发布于 2019-03-23 23:13:22
您的_future函数只接受一个参数,但是您的executor.submit没有向它传递任何参数。例如,您应该将number作为参数传递给它:
for number in list(range(0,100)):
future = executor.submit(_future, number)
futures.append(future)另一方面,由于您将_future的一个参数命名为self,这意味着您希望它成为一个类的实例,在这种情况下,您应该在原始的、未最小化的代码中将适当的实例对象传递给它。
https://stackoverflow.com/questions/55315109
复制相似问题