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

相关推荐
Yu_Lijing3 天前
Python数据分析和数据处理库Pandas(透视表)
人工智能·数据挖掘·数据分析·pandas
yuanpan3 天前
Python Pandas 库入门:介绍与基本使用教程
开发语言·python·pandas
2401_827499994 天前
数据分析学习05(黑马)-Pandas
学习·数据分析·pandas
2501_921960855 天前
协同本体论:元公理体系、普适演化律则与工程范式统一构建
python·重构·numpy·pandas·scipy
唐骁虎6 天前
使用SQLAlchemy查询Pandas DataFrame
数据库·oracle·pandas
万粉变现经纪人6 天前
如何解决 pip install jaxlib[cuda] 报错 CUDA 版本与轮子标签不匹配 问题
人工智能·python·深度学习·tensorflow·pandas·scikit-learn·pip
Yu_Lijing7 天前
Python数据分析和数据处理库Pandas(数据组合函数)
人工智能·数据挖掘·数据分析·pandas
Yu_Lijing8 天前
Python数据分析和数据处理库Pandas(DataFrame数据分析入门)
人工智能·python·数据分析·pandas
星越华夏9 天前
Pandas实现excel的IF函数功能
excel·pandas
啦啦啦_999910 天前
Pandas之Series对象
pandas