并发执行
********

本章中描述的模块支持并发执行代码。 适当的工具选择取决于要执行的任务（
CPU密集型或IO密集型）和偏好的开发风格（事件驱动的协作式多任务或抢占式
多任务处理）。 这是一个概述：

* "threading" --- 基于线程的并行

  * 线程本地数据

  * 线程对象

  * 锁对象

  * 递归锁对象

  * 条件对象

  * 信号量对象

    * "Semaphore" 例子

  * 事件对象

  * 定时器对象

  * 栅栏对象

  * 在 "with" 语句中使用锁、条件和信号量

* "multiprocessing" --- 基于进程的并行

  * 概述

    * "Process" 类

    * 上下文和启动方法

    * 在进程之间交换对象

    * 进程间同步

    * 进程间共享状态

    * 使用工作进程

  * 参考

    * "Process" 和异常

    * 管道和队列

    * 杂项

    * 连接对象（Connection）

    * 同步原语

    * 共享 "ctypes" 对象

      * "multiprocessing.sharedctypes" 模块

    * 管理器

      * 自定义管理器

      * 使用远程管理器

    * 代理对象

      * 清理

    * 进程池

    * 监听器及客户端

      * 地址格式

    * 认证密码

    * 日志记录

    * "multiprocessing.dummy" 模块

  * 编程指导

    * 所有start方法

    * *spawn* 和 *forkserver* 启动方式

  * 例子

* "multiprocessing.shared_memory" --- 可从进程直接访问的共享内存

* "concurrent" 包

* "concurrent.futures" --- Launching parallel tasks

  * Executor Objects

  * ThreadPoolExecutor

    * ThreadPoolExecutor Example

  * ProcessPoolExecutor

    * ProcessPoolExecutor Example

  * Future Objects

  * Module Functions

  * Exception classes

* "subprocess" --- 子进程管理

  * 使用 "subprocess" 模块

    * 常用参数

    * Popen 构造函数

    * 异常

  * 安全考量

  * Popen 对象

  * Windows Popen 助手

    * Windows 常数

  * 较旧的高阶 API

  * 使用 "subprocess" 模块替换旧函数

    * 替代 **/bin/sh** shell 命令替换

    * 替代 shell 管道

    * 替代 "os.system()"

    * 替代 "os.spawn" 函数族

    * 替代 "os.popen()", "os.popen2()", "os.popen3()"

    * 来自 "popen2" 模块的替代函数

  * 旧式的 Shell 发起函数

  * 备注

    * 在 Windows 上将参数列表转换为一个字符串

* "sched" --- 事件调度器

  * 调度器对象

* "queue" --- 一个同步的队列类

  * Queue对象

  * SimpleQueue 对象

* "contextvars" --- 上下文变量

  * 上下文变量

  * 手动上下文管理

  * asyncio 支持

以下是上述某些服务的支持模块：

* "_thread" --- 底层多线程 API
