Python 标准库 18.5
Event Loop event loop 对象包含两个部分:event 和 loop。event 负责 I/O 事件通知而 loop 负责循环处理 I/O 通知并在就绪时调用回调。这里 event 的含义与 select 中的 event mask 类似。 BaseEventLoop 类实现了基本的 loop 部分,而类似于 BaseSelectorEventLoop 这样的类实现了基于 selector 的 event 部分。 event loop 内部维护着两个容器: _ready 和 _scheduled 。类型分别是 deque 和 list 。_ready 代表已经可以执行,_scheduled 代表计划执行。_scheduled 中的 handle 是可以 cancel 的。 一次 loop 的基本流程可以参见 _run_once() 方法,其说明文档如下: This calls all currently ready callbacks, polls for I/O, schedules the resulting callbacks, and finally schedules 'call_later' callbacks. 流程为: 将 _scheduled 中已 canceled 的 handle 去掉 检查 _ready 和 _scheduled