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

相关推荐
benchmark_cc1 天前
本地已有一年历史 K 线,第二天更新别只拉“昨天一天”
python·数据分析·pandas·量化交易·股票数据·quantdash
正在走向自律3 天前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
ctlover3 天前
Pandas进阶
人工智能·机器学习·pandas
程序员清风3 天前
数据类型转换与日期时间处理
数据结构·pandas
for_ever_love__4 天前
Pandas 基础——用 DataFrame 管理训练数据与实验记录
数据分析·pandas·大模型开发·dataframe
benchmark_cc5 天前
A股量化尾盘筛选对数据时效敏感:行情链路变慢时先排查哪里?
python·数据分析·pandas·量化交易·股票数据·quantdash
梅雅达编程笔记5 天前
07-Pandas数据清洗:
pandas·drop_duplicates·dropna·fillna·to_numeric·to_datetime·清洗流程
for_ever_love__5 天前
电商订单数据清洗实战——Pandas 处理缺失值、重复单与异常金额
python·数据分析·pandas·数据清洗
weixin_440401695 天前
质朴的爬虫+数据处理
爬虫·python·数据分析·pandas
程序员清风6 天前
pandas 核心数据结构:Series 与 DataFrame
数据结构·pandas