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

相关推荐
絆人心1 天前
Python 数据分析核心库:Pandas 与 NumPy 从入门到实战全指南(附电商用户分析完整代码)
python·数据挖掘·数据分析·numpy·pandas·数据处理·电商数据分析
李昊哲小课1 天前
Pandas数据分析 - 第十二章:性能优化
性能优化·数据挖掘·数据分析·pandas
李昊哲小课1 天前
Pandas数据分析 - 第二章:Series 对象详解
数据挖掘·数据分析·pandas
测试开发Kevin1 天前
Pandas 2.x核心技术—— Apache Arrow 高性能数据处理的基石
大数据·pandas
李昊哲小课1 天前
Pandas数据分析 - 第三章:DataFrame 对象详解
数据挖掘·数据分析·pandas
不会唱歌的拖拉机1 天前
使用Pandas进行RFM分析全过程
数据分析·pandas
李昊哲小课2 天前
Pandas数据分析 - 第九章:分组聚合操作
数据挖掘·数据分析·pandas
李昊哲小课2 天前
Pandas数据分析 - 第八章:数据重塑
数据挖掘·数据分析·pandas
李昊哲小课2 天前
Pandas数据分析 - 第四章:数据读取与保存
数据挖掘·数据分析·pandas
李昊哲小课2 天前
Pandas数据分析 - 第七章:数据合并与连接
数据挖掘·数据分析·pandas