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 以支持 库和框架的开发者 实现:
使用 transports 实现高效率协议;
通过 async/await 语法 桥接 基于回调的库和代码。
Availability: 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'
引发一个不带参数的 审计事件 cpython.run_stdin
。
在 3.12.5 版本发生变更: (还有 3.11.10, 3.10.15, 3.9.20 和 3.8.20) 将发出审计事件。
在 3.13 版本发生变更: 如果无法做到则使用 PyREPL,在此情况下 PYTHONSTARTUP 也会被执行。 将发出审计事件。
参考
高层级 API
低层级 API
指南与教程
备注
asyncio 的源代码可以在 Lib/asyncio/ 中找到。