我看到过一些关于异步的基本 Python 3.5教程,它们以不同的方式执行相同的操作。 在这个代码中:
import asyncio
async def doit(i):
print("Start %d" % i)
await asyncio.sleep(3)
print("End %d" % i)
return i
if __name__ == '__main__':
loop = asyncio.get_event_loop()
#futures = [asyncio.ensure_future(doit(i), loop=loop) for i in range(10)]
#futures = [loop.create_task(doit(i)) for i in range(10)]
futures = [doit(i) for i in range(10)]
result = loop.run_until_complete(asyncio.gather(*futures))
print(result)
上面定义 futures
变量的所有三个变量都得到了相同的结果; 我能看到的唯一区别是,对于第三个变量,执行是无序的(这在大多数情况下应该没有关系)。还有别的区别吗?是否存在不能使用最简单变量(协程清单)的情况?