# 16. Optional Operating System Services

The modules described in this chapter provide interfaces to operating system features that are available on selected operating systems only. The interfaces are generally modeled after the Unix or C interfaces but they are available on some other systems as well (e.g. Windows or NT). Here’s an overview:

- 16.1. `select` — Waiting for I/O 完成
  - 16.1.1. 边缘触发和水平触发的轮询 (epoll) 对象
  - 16.1.2. Poll 对象
  - 16.1.3. Kqueue 对象
  - 16.1.4. Kevent 对象
- 16.2. `threading` — Higher-level threading interface
  - 16.2.1. 线程对象
  - 16.2.2. 锁对象
  - 16.2.3. 递归锁对象
  - 16.2.4. 条件对象
  - 16.2.5. 信号量对象
    - 16.2.5.1. `Semaphore` 例子
  - 16.2.6. 事件对象
  - 16.2.7. 定时器对象
  - 16.2.8. Using locks, conditions, and semaphores in the `with` statement
  - 16.2.9. Importing in threaded code
- 16.3. `thread` — Multiple threads of control
- 16.4. `dummy_threading` — 可直接替代 `threading` 模块。
- 16.5. `dummy_thread` — Drop-in replacement for the `thread` module
- 16.6. `multiprocessing` — Process-based “threading” interface
  - 16.6.1. 概述
    - 16.6.1.1. `Process` 类
    - 16.6.1.2. 在进程之间交换对象
    - 16.6.1.3. 进程之间的同步
    - 16.6.1.4. 在进程之间共享状态
    - 16.6.1.5. 使用工作进程
  - 16.6.2. 参考
    - 16.6.2.1. `Process` 和异常
    - 16.6.2.2. 管道和队列
    - 16.6.2.3. 杂项
    - 16.6.2.4. 连接对象（Connection）
    - 16.6.2.5. 同步原语
    - 16.6.2.6. 共享 `ctypes` 对象
      - 16.6.2.6.1. `multiprocessing.sharedctypes` 模块
    - 16.6.2.7. 数据管理器
      - 16.6.2.7.1. 自定义管理器
      - 16.6.2.7.2. 使用远程管理器
    - 16.6.2.8. 代理对象
      - 16.6.2.8.1. 清理
    - 16.6.2.9. 进程池
    - 16.6.2.10. 监听者及客户端
      - 16.6.2.10.1. 地址格式
    - 16.6.2.11. 认证密码
    - 16.6.2.12. 日志记录
    - 16.6.2.13. `multiprocessing.dummy` 模块
  - 16.6.3. 编程指导
    - 16.6.3.1. All platforms
    - 16.6.3.2. Windows
  - 16.6.4. 例子
- 16.7. `mmap` — 内存映射文件支持
- 16.8. `readline` — GNU readline 接口
  - 16.8.1. 初始化文件
  - 16.8.2. 行缓冲区
  - 16.8.3. 历史文件
  - 16.8.4. 历史列表
  - 16.8.5. 启动钩子
  - 16.8.6. Completion
  - 16.8.7. 示例
- 16.9. `rlcompleter` — GNU readline 的补全函数
  - 16.9.1. Completer 对象