第二十七章 异步编程总结
关于协程内容的总结
-
什么是协程对象
协程函数加()会得到协程对象 -
协程对象能直接运行么?
async def func(): pass func()
不可以 -> 控制台返回的是一个协程对象的地址
-
如何运行协程对象
需要创建一个事件循环并将协程函数对象放入到事件循环中执行 -
如何创建事件循环
在python3.7以上版本使用asyncio.run()创建事件循环 -
await 关键字
await关键字后面只能接可等待的对象 [协程对象 task对象以及future对象]
await遇到IO等待时, 如果在事件循环中存在可以执行的任务则自动切换, 否则直到await获取到任务的返回值之后才会解除堵塞 -
task对象
如果在事件循环中放入了协程对象则在程序内部会自动创建task对象来实现并发任务执行
可以选择在函数内部手动创建task对象 -> asyncio.create_task(协程对象)
注意:创建task对象之前需要保证事件循环先要被创建, 原因是task对象会自动将协程对象放入到事件循环中, 如果事件循环不存在则报错