"asyncio" --- 异步 I/O
**********************

======================================================================


Hello World!
^^^^^^^^^^^^

   import asyncio

   async def main():
       print('Hello ...')
       await asyncio.sleep(1)
       print('... World!')

   asyncio.run(main())

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

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

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

asyncio 提供一组 **高层级** API 用于:

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

* 执行 网络 IO 和 IPC;

* 控制 子进程;

* 通过 队列 实现分布式任务;

* 同步 并发代码;

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

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

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

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

可用性: 非 Emscripten，非 WASI。

此模块在 WebAssembly 平台 "wasm32-emscripten" 和 "wasm32-wasi" 上不适
用或不可用。 请参阅 WebAssembly platforms 了解详情。

-[ 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'

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

在 3.11.10 版本发生变更: (also 3.10.15, 3.9.20, and 3.8.20) Emits
audit events.

-[ 参考 ]-


高层级 API
^^^^^^^^^^

* 运行器

* 协程与任务

* 流

* 同步原语

* 子进程集

* 队列集

* 异常


低层级 API
^^^^^^^^^^

* 事件循环

* Futures

* 传输和协议

* 策略

* 平台支持

* 扩展


指南与教程
^^^^^^^^^^

* 高层级 API 索引

* 低层级 API 索引

* 用 asyncio 开发

备注:

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