前言
理解成为一个死循环
# 伪代码理解事件循环
任务列表 = [任务1, 任务2, 任务3]
while True:
可执行的任务列表, 已完成的任务列表 = 去任务列表中检查所有的任务, 将可执行和已完成的任务返回
for 就绪任务 in 可执行的任务列表:
执行已就绪的任务
for 已完成的任务 in 已完成的任务列表:
在任务列表中移除 已完成的任务
如果 任务列表 中的任务都已完成, 则终止循环
二、事件循环在python中的实现
# 去生成或获取一个事件循环
loop = asyncio.get_event_loop()
# 将任务放到任务列表
loop.run_until_complete(任务)
二、快速上手
- 协程函数, 定义函数时候 async def 函数名.
- 协程对象, 执行 协程函数() 得到的协程对象.
# 协程函数
async def fun1():
pass
# 协程对象
result = fun1()
执行协程函数创建协程对象, 函数内部代码不会执行
如果想要运行协程函数内部代码, 必须要将协程对象交给事件循环来处理
import asyncio
# 协程函数
async def fun1():
print("....")
# 协程对象
result = fun1()
loop = asyncio.get_event_loop()
loop.run_until_complete(result)
- 在python3.7以后
import asyncio
# 协程函数
async def fun1():
print("....")
# 协程对象
result = fun1()
# loop = asyncio.get_event_loop()
# loop.run_until_complete(result)
asyncio.run(result)