我刚开始怀疑Python3.5的新asyncio
,但是我从一开始就迷路了。根据文档asyncio.gather
运行async def
并行。但是,当我计算以下小脚本时:
import asyncio
import time
async def double(x):
time.sleep(x)
return x * 2
loop = asyncio.get_event_loop()
a = loop.run_until_complete(asyncio.gather(
double(2),
double(4),
double(5)
))
loop.close()
print(a)
执行时间是:
$ time python3 asincio_test.py
[4, 8, 10]
real 0m11.081s
user 0m0.060s
sys 0m0.004s
所以似乎执行是按顺序完成的。我错过了什么?