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 completion

  * 16.1.1. Edge and Level Trigger Polling (epoll) Objects

  * 16.1.2. Polling Objects

  * 16.1.3. Kqueue Objects

  * 16.1.4. Kevent Objects

* 16.2. "threading" — Higher-level threading interface

  * 16.2.1. Thread Objects

  * 16.2.2. Lock Objects

  * 16.2.3. RLock Objects

  * 16.2.4. Condition Objects

  * 16.2.5. Semaphore Objects

    * 16.2.5.1. "Semaphore" Example

  * 16.2.6. Event Objects

  * 16.2.7. Timer Objects

  * 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" — Drop-in replacement for the "threading"
  module

* 16.5. "dummy_thread" — Drop-in replacement for the "thread" module

* 16.6. "multiprocessing" — Process-based “threading” interface

  * 16.6.1. Introduction

    * 16.6.1.1. The "Process" class

    * 16.6.1.2. Exchanging objects between processes

    * 16.6.1.3. Synchronization between processes

    * 16.6.1.4. Sharing state between processes

    * 16.6.1.5. Using a pool of workers

  * 16.6.2. Reference

    * 16.6.2.1. "Process" and exceptions

    * 16.6.2.2. Pipes and Queues

    * 16.6.2.3. Miscellaneous

    * 16.6.2.4. Connection Objects

    * 16.6.2.5. Synchronization primitives

    * 16.6.2.6. Shared "ctypes" Objects

      * 16.6.2.6.1. The "multiprocessing.sharedctypes" module

    * 16.6.2.7. Managers

      * 16.6.2.7.1. Customized managers

      * 16.6.2.7.2. Using a remote manager

    * 16.6.2.8. Proxy Objects

      * 16.6.2.8.1. Cleanup

    * 16.6.2.9. Process Pools

    * 16.6.2.10. Listeners and Clients

      * 16.6.2.10.1. Address Formats

    * 16.6.2.11. Authentication keys

    * 16.6.2.12. Logging

    * 16.6.2.13. The "multiprocessing.dummy" module

  * 16.6.3. Programming guidelines

    * 16.6.3.1. All platforms

    * 16.6.3.2. Windows

  * 16.6.4. Examples

* 16.7. "mmap" — Memory-mapped file support

* 16.8. "readline" — GNU readline interface

  * 16.8.1. Init file

  * 16.8.2. Line buffer

  * 16.8.3. History file

  * 16.8.4. History list

  * 16.8.5. Startup hooks

  * 16.8.6. Completion

  * 16.8.7. Example

* 16.9. "rlcompleter" — Completion function for GNU readline

  * 16.9.1. Completer Objects
