python异步编程(二)事件循环
事件循环
- 事件循环是异步的实现方式
- 事件循环可以理解为一个循环,该循环的作用是检测并执行代码
- 将所有需要执行的任务放在一个列表中,并给出状态
伪代码
任务列表=[ 任务1,任务2,任务3 ]
while True:
可执行的任务列表,已完成的任务列表=去任务列表中检查所有的任务,将’可执行"和'已完成 的任务返回
for 就绪任务 in 可执行的任务列表:
执行已就绪的任务
for 已完成的任务 in 已完成的任务列表:
在任务列表中移除 已完成的任务
如果 任务列表 中的任务都已完成,则终止循环
基本应用
协程函数:定义函数时,如果在函数前面加上 async 关键字,则为协程函数
协程对象:执行 协程函数() 得到协程对象
async def func(): # 协程函数
print('######')
result = func() # 协程对象,func函数的内部代码不会执行
如果想要执行协程函数内部代码,必须要将协程对象交给事件循环处理
import asyncio
async def func(): # 协程函数
print('######')
result = func() # 协程对象,func函数的内部代码不会执行
# loop = asyncio.get_event_loop()
# loop.run_until_complete(result) # 3.5-3.6 版本写法
asyncio.run(result) # 3.7 及之后版本可这样写