pixcai
2018-07-13 10:23:41 +08:00
官方的 asyncio 已经提供你所需要的 API 了:
asyncio.as_completed(fs, *, loop=None, timeout=None)
Return an iterator whose values, when waited for, are Future instances.
上面提到的 asyncio.wait 会等待所有的执行完,asyncio.as_completed 只要有一个执行完就立即返回,例如你要的效果:
futures = [future1, future2, future3]
for next_completed in asyncio.as_completed(futures):
result = await next_completed
if result is not None:
break
这样在取结果的时候,其它的 future 还在执行,应该就是你要的效果。