# `asyncio` --- 异步 I/O

asyncio 是用来编写 并发 代码的库，使用 async/await 语法。

asyncio 被用作多个 Python 异步框架的基础，这些框架提供高性能网络和网站服务，数据库连接库，分布式任务队列等等。

asyncio 往往是构建 IO 密集型和高层级 结构化 网络代码的最佳选择。

参见

A Conceptual Overview of asyncio

  有关 asyncio 的基础介绍。

asyncio 提供一组 高层级 API 用于：

- 并发地 运行 Python 协程 并对其执行过程实现完全控制;

- 执行 网络 IO 和 IPC;

- 控制 子进程;

- 通过 队列 分发任务;

- 同步 并发代码;

此外，还有一些 低层级 API 以支持 库和框架的开发者 实现：

- 创建和管理 事件循环，它提供用于 连接网络, 运行 子进程, 处理 OS 信号 等功能的异步 API；

- 使用 transports 实现高效率协议;

- 通过 async/await 语法 桥接 基于回调的库和代码。

适用范围: not WASI.

此模块在 WebAssembly 平台上无效或不可用。请参阅 WebAssembly 平台 了解详情。

asyncio REPL

你可以在 REPL 中尝试使用 `asyncio` 并发上下文：

    $ python -m asyncio
    asyncio REPL ...
    Use "await" directly instead of "asyncio.run()".
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import asyncio
    >>> await asyncio.sleep(10, result='hello')
    'hello'

这个 REPL 提供了与 `PYTHON_BASIC_REPL` 的有限兼容性。推荐使用默认的 REPL 以获得完整功能和最新特性。

引发一个不带参数的 审计事件 `cpython.run_stdin`。

在 3.12.5 版本发生变更: （还有 3.11.10, 3.10.15, 3.9.20 和 3.8.20）将发出审计事件。

在 3.13 版本发生变更: 如果可能则使用 PyREPL，在此情况下 `PYTHONSTARTUP` 也会被执行。将发出审计事件。

参考

高层级 API

- 运行器
- 协程与任务
- 流
- 同步原语
- 子进程
- 队列
- 异常
- 调用图内省

低层级 API

- 事件循环
- Futures
- 传输和协议
- 策略
- 平台支持
- 扩展

指南与教程

- 高层级 API 索引
- 低层级 API 索引
- 用 asyncio 开发

备注

asyncio 的源代码可以在 Lib/asyncio/ 中找到。