串行
import asyncio
import time
async def say_after(delay,what):
await asyncio.sleep(delay)
print(what)
async def main():
print(f"started at {time.strftime('%X')}")
await say_after(1,'hello') #await是等待say_after返回结果才能继续往下执行
await say_after(2,'world')
print(f"finished at {time.strftime('%X')}")
asyncio.run(main())
串行就是顺序执行
并行
import asyncio
import time
async def say_after(delay,what):
await asyncio.sleep(delay)
print(what)
async def main():
task1=asyncio.create_task(say_after(1,'hello'))
task2=asyncio.create_task(say_after(2,'world'))
print(f"started at {time.strftime('%X')}")
await task1
await task2
print(f"finished at {time.strftime('%X')}")
asyncio.run(main())
异步的核心是asyncio.create_task
参考资料:
文章评论