代码
import asyncio
import time
now = lambda: time.time()
def work1():
print(f"work1 is called,时间: {now()}")
time.sleep(0.5)
time1 = now()
for i in range(6):
work1()
print("同步花费的时间是{}\n".format(now() - time1))
async def work2():
print(f"work2 is called,时间: {now()}")
await asyncio.sleep(0.5)
time2 = now()
loop = asyncio.get_event_loop()
tasks = [work2() for x in range(6)]
loop.run_until_complete(asyncio.wait(tasks))
print("异步花费的时间是{}".format(now() - time2))
运行结果
补充
- 在代码中,同步跟异步所调用的函数,分别每次都睡眠了0.5s
- 同步跟异步分别都调用了六次函数
- 而在运行结果中可以发现,同步调用一共睡眠了 0.5 × 6 秒,异步调用则只是睡眠了唯一的一次 0.5 秒