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 天前
8月25-26日总结
python·pandas
观察员5 天前
用 Pandas 对抓取的电影数据进行分析
pandas
人工干智能5 天前
科普:pandas 时间偏移别名:ts.resample(“5Min“).sum()
python·pandas
benchmark_cc10 天前
批量获取量化数据时,如何设置合理的超时和重试机制?——QuantDash 高性能实战指南
开发语言·人工智能·python·pandas·量化·quantdash
2601_9669496510 天前
使用 Pandas 读取批量数据时如何避免内存溢出?QuantDash 量化数据工程师避坑指南
开发语言·python·pandas·tushare·akshare·quantdash
三十岁老牛再出发11 天前
08.18每日总结
c++·python·numpy·pandas
虎头金猫13 天前
如何在群晖NAS上通过Docker部署CloudSaver?群晖部署CloudSaver教程|聚合资源搜索并实现远程访问
运维·服务器·网络·python·docker·容器·pandas
Uncommon.15 天前
使用pandas处理csv并转为张量
pytorch·python·深度学习·pandas
STR_Liang17 天前
pandas.read_html 报错FileNotFoundError、OSError Traceback (most recent call last)
pandas
㳺三才人子18 天前
初探 Data Analysis - Matplotlib
python·plotly·pandas·matplotlib