我应该并行运行一些函数并收集数据一秒钟,然后在经过一段时间后返回数据。
问题是,(据我所知)一项任务在另一项之前完成,导致results
在该结果上为空。下面的代码为例:
import asyncio
import time
async def task(id,end_time):
print('Started task ',id)
results = []
while time.time() < end_time:
results.append(1)
return results
async def main():
while True:
end_time = time.time() + 1
results = await asyncio.gather(*[task(i,end_time) for i in range(2)])
print(len(results[0]),len(results[1]))
try:
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
except KeyboardInterrupt:
pass
finally:
loop.close()
返回
Started task 0
Started task 1
5580452 0
我要去哪里错了?我知道我应该以某种方式使其等待所有任务完成,然后再处理结果,但是经过一段时间摆弄不同的事情之后,我真的不知道如何实现这一目标。