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 完成 → 协程继续

相关推荐
SilentSamsara2 小时前
特征工程系统方法论:编码、分箱、交互特征与特征选择
开发语言·人工智能·python·机器学习·青少年编程·信息可视化·pandas
一晌小贪欢4 小时前
第22节:相关性分析——协方差、相关系数与热力图解读
开发语言·python·数据分析·pandas·数据可视化
糖果店的幽灵3 天前
Pandas 数据读取与写入(IO 操作)详细总结
pandas
糖果店的幽灵3 天前
Pandas DataFrame 数据结构详解
数据结构·pandas
SilentSamsara3 天前
Pandas 工程化:多层索引、分组聚合与窗口函数的进阶用法
开发语言·python·青少年编程·pandas
牵牛花主人3 天前
【无标题】
python·pandas
糖果店的幽灵3 天前
时间序列处理
开发语言·python·pandas
一晌小贪欢4 天前
第19节:地理空间分析——使用 Geopandas 绘制热力地图
开发语言·python·数据分析·pandas·数据可视化
星越华夏4 天前
pandas字符串运算列在字母前后添加字符
pandas
wayz114 天前
pandas_ta 库指标分类
pandas·pandas_ta