术语表
| 术语 | 解释 |
|---|---|
| async function | 用 async def 定义的函数,也叫 coroutine function |
| coroutine object | 调用 async function 后得到的对象,函数体尚未执行 |
| awaitable | 可以放在 await 后面的对象 |
| Future | 一个以后会填入结果的对象,可能成功、失败或被取消 |
| Task | 交给事件循环运行的 coroutine,也可以被 await 等结果 |
| event loop | 事件循环,负责安排 callback、Task、timer 和 I/O 谁先运行 |
| callback | 被事件循环调用的普通函数 |
| Handle | call_soon() 等 API 返回或内部使用的 callback 句柄 |
| TimerHandle | 定时 callback 句柄 |
| ready queue | 当前可以运行的 callback 队列 |
| selector | Python 用来等待 socket 可读可写的接口,具体等待交给操作系统 |
| cooperative scheduling | 协程走到 await 时主动停下,让事件循环去跑别的任务 |
| cancellation | 取消请求,通常会让 Task 在下一个等待点抛出 CancelledError |
| structured concurrency | 把一组子任务放进一个明确的代码块里,退出时一起收尾 |
| TaskGroup | asyncio 里管理一组相关 Task 的工具 |
| ExceptionGroup | Python 3.11 引入的异常组,用于同时表达多个异常 |
| StreamReader | 用 await 从网络连接里读数据的对象 |
| StreamWriter | 用 write() 和 drain() 往网络连接写数据的对象 |
| drain | 等待写缓冲降到可继续写的流控点 |
| backpressure | 背压,下游慢时让上游暂停,避免无限堆积 |
| Queue | 异步队列,用于生产者消费者写法 |
| Semaphore | 信号量,用于限制并发数量 |
| debug mode | asyncio 调试模式,用于发现慢 callback、忘记 await、线程误用等问题 |
| blocking call | 阻塞调用,会占住事件循环线程 |
| executor | 用线程池或进程池运行同步函数的工具 |
| Transport/Protocol | callback 风格的网络接口,通常是框架作者才会直接用 |