
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).
Here's an overview:

* ``select`` --- Waiting for I/O completion
  * Edge and Level Trigger Polling (epoll) Objects
  * Polling Objects
  * Kqueue Objects
  * Kevent Objects
* ``threading`` --- Thread-based parallelism
  * Thread Objects
  * Lock Objects
  * RLock Objects
  * Condition Objects
  * Semaphore Objects
    * ``Semaphore`` Example
  * Event Objects
  * Timer Objects
  * Using locks, conditions, and semaphores in the ``with`` statement
  * Importing in threaded code
* ``multiprocessing`` --- Process-based parallelism
  * Introduction
    * The ``Process`` class
    * Exchanging objects between processes
    * Synchronization between processes
    * Sharing state between processes
    * Using a pool of workers
  * Reference
    * ``Process`` and exceptions
    * Pipes and Queues
    * Miscellaneous
    * Connection Objects
    * Synchronization primitives
    * Shared ``ctypes`` Objects
      * The ``multiprocessing.sharedctypes`` module
    * Managers
      * Namespace objects
      * Customized managers
      * Using a remote manager
    * Proxy Objects
      * Cleanup
    * Process Pools
    * Listeners and Clients
      * Address Formats
    * Authentication keys
    * Logging
    * The ``multiprocessing.dummy`` module
  * Programming guidelines
    * All platforms
    * Windows
  * Examples
* ``mmap`` --- Memory-mapped file support
* ``readline`` --- GNU readline interface
  * Example
* ``rlcompleter`` --- Completion function for GNU readline
  * Completer Objects
* ``dummy_threading`` --- Drop-in replacement for the ``threading``
  module
* ``_thread`` --- Low-level threading API
* ``_dummy_thread`` --- Drop-in replacement for the ``_thread`` module