Python异步----------await方法逻辑

主要功能

把当前协程暂停,把控制权交还给事件循环,并约定等某个Future/任务完成以后再从此处继续执行。

主要逻辑

1,调用一个asyncio版本的读操作,比如await resp.text()

2,事件循环会创建一个Future(一个将来会有结果的对象),把这个socket的fd(file descriptor文件描述符)注册到os的监听器里,将这个fd与Future进行绑定,关注可读事件,此时协程挂起,事件循环去跑其他已就绪的任务。

3,os一旦发现某个fd可读可写,就返回 哪个fd发生了什么。

4,事件循环根据绑定关系,找到当初登记的回调/future 尝试真正的recv()把数据读出来,把读到的数据future.set_result(data),这个future就完成。

5,future一旦完成,事件循环就把await这个future的协程访问就绪队列

6,下一轮调度,协程从await的地方继续往下跑

总结

登记 fd → OS 通知 → Future 完成 → 协程继续

相关推荐
菜冻鱼3 天前
Python-pandas-索引与筛选
开发语言·笔记·python·numpy·pandas·学习方法
yanweijie03173 天前
Pandas 完整数据分析工作流实战(标准 5 步流程)
数据挖掘·数据分析·pandas
小趴蔡ha3 天前
04 Pandas 数据清洗实战:从表格读取到机器学习特征准备
人工智能·机器学习·pandas
cui_ruicheng4 天前
Python数据分析(十四):Pandas 数据可视化
python·信息可视化·数据分析·pandas
lkx097886 天前
01-数据分析入门-Pandas实战
数据挖掘·数据分析·pandas
淼澄研学8 天前
Python自动化办公实操:基于pandas与requests的5个提效场景解析
python·自动化·pandas
Y38153266214 天前
serpbase + Pandas + Jupyter 数据分析实战
jupyter·数据分析·pandas
元Y亨H14 天前
numpy与pandas 的介绍
numpy·pandas
小大宇16 天前
python pandas dataFrame sqlAlchemy案例
python·pandas
chouchuang16 天前
day-040-Pandas可视化与实战
pandas