Python asyncio Event Loop 核心运行流程

Single-Threaded Asynchronous I/O — 事件循环每一次迭代的工作步骤

1 就绪队列执行 Execute Ready Callbacks collections.deque _ready 2 I/O 多路复用等待 selector.select(timeout) epoll / kqueue / IOCP 3 处理 I/O 就绪事件 将回调加入 _ready 队列 sock_readable → callback 4 检查定时器堆 Process Scheduled Timers heapq _scheduled(最小堆) 遇到 await I/O I/O 就绪返回 回调入队 _ready 到期回调入队 timeout = next_timer - now INFINITE LOOP 协程生命周期 Corouting Lifecycle 创建协程 加入就绪队列 执行中 await 挂起 等待 I/O I/O完成 → 恢复 返回结果