# 高层级 API 索引

这个页面列举了所有能用于 async/await 的高层级 asyncio API。

## 任务

运行异步程序，创建 Task 对象，以及带有超时机制地等待多个事项的工具集。

`run()` | 创建事件循环，运行一个协程，关闭事件循环。
`Runner` | 一个能够简化多次异步函数调用操作的上下文管理器。
`Task` | Task 对象
`TaskGroup` | 持有一组任务的上下文管理器。它提供了一种等待分组中所有任务完成的方便可靠的方式。
`create_task()` | 启动一个异步 Task，然后将其返回。
`current_task()` | 返回当前 Task 对象
`all_tasks()` | 返回一个事件循环的所有尚未完成的任务。
`await` `sleep()` | 休眠几秒。
`await` `gather()` | 并发执行所有事件的调度和等待。
`await` `wait_for()` | 有超时控制的运行。
`await` `shield()` | 屏蔽取消操作
`await` `wait()` | 完成情况的监控器
`timeout()` | 设置超时运行。在 `wait_for` 不适合的情况下会很有用。
`to_thread()` | 在不同的 OS 线程中异步地运行一个函数。
`run_coroutine_threadsafe()` | 从其他 OS 线程中调度一个协程。
`for in` `as_completed()` | 用 `for` 循环监控完成情况。

例子

- 使用 asyncio.gather() 并行运行.

- 使用 asyncio.wait_for() 强制超时.

- 取消操作.

- asyncio.sleep() 的用法.

- 请主要参阅 协程与任务文档.

## 队列

队列可被用于在多个异步 Task 之间分配工作、实现连接池以及发布/订阅模式。

`Queue` | 先进先出队列
`PriorityQueue` | 优先级队列。
`LifoQueue` | 后进先出队列。

例子

- 使用 asyncio.Queue 在多个并发任务间分配工作量.

- 请参阅 队列文档.

## 子进程

用于生成子进程和运行 shell 命令的工具包。

`await` `create_subprocess_exec()` | 创建一个子进程。
`await` `create_subprocess_shell()` | 运行一个 shell 命令。

例子

- 执行一个 shell 命令.

- 请参阅 子进程 APIs 相关文档。

## 流

用于网络 IO 处理的高层级 API。

`await` `open_connection()` | 建立一个 TCP 连接。
`await` `open_unix_connection()` | 建立一个 Unix socket 连接。
`await` `start_server()` | 启动 TCP 服务。
`await` `start_unix_server()` | 启动一个 Unix 套接字服务。
`StreamReader` | 接收网络数据的高级 async/await 对象。
`StreamWriter` | 发送网络数据的高级 async/await 对象。

例子

- TCP 客户端样例.

- 请参阅 流 API 文档。

## 同步

可在 Task 中使用的类似线程的同步原语。

`Lock` | 互斥锁。
`Event` | 事件对象。
`Condition` | 条件对象
`Semaphore` | 信号量
`BoundedSemaphore` | 有界的信号量。
`Barrier` | 一个 Barrier 对象。

例子

- asyncio.Event 的用法.

- 使用 asyncio.Barrier。

- 请参阅 asyncio 同步原语 文档。

## 异常

`asyncio.CancelledError` | 当一个 Task 对象被取消的时候被引发。请参阅 `Task.cancel()`。
`asyncio.BrokenBarrierError` | 当一个 Barrier 对象被破坏时引发。另请参阅 `Barrier.wait()`。

例子

- 处理 CancelledError 以在取消请求时运行代码.

- 请参阅完整的 asyncio 专用异常 列表。