1. asyncio是什么(官方文档入口)
asyncio is a library to write concurrent code using the async/await syntax.
官方文档里给的定义如上,简单来说就是用asyncio库里的async/await 语法来写一个异步代码。
asyncio库通常用来写高性能网络、web服务器、分布式任务队列等Python异步框架。
2. 使用async/await创建一个简单的协程用例及源码分析
import asyncio
import time
async def say_after(delay, what):
"""
创建一个可awaitable的程序
"""
await asyncio.sleep(delay) # 挂起该程序delay s
print(what)
async def main():
"""
创建一个协程程序入口
"""
print(f"started at {time.strftime('%X')}")
# 直到两个awaitable任务结束程序才结束
await say_after(2, 'hello')
await say_after(1, 'world')
print(f"finished at {time.strftime('%X')}")
asyncio.run(main())
## output
started at 17:13:52
hello
world
finished at 17:13:55
我们发现其实它还是一个同步的程序,并没有减少程序运行时间。现在我们改动一下main代码,再执行
async def main():
"""
创建一个协程程序入口
"""
# 使用asyncio.create_task添加任务
task1 = asyncio.create_task(
say_after(2, 'hello'))
task2 = asyncio.create_task(
say_after(1, 'world'))
print(f"started at {time.strftime('%X')}"