並行実行
********

この章で記述されているモジュールは、コードの並行実行のサポートを提供し
ます。ツールの適切な選択は、実行されるタスク(IO bound vs CPU bound) や
推奨される開発スタイル (イベントドリブンな協調的マルチタスク vs プリエ
ンプティブマルチタスク) に依存します。ここに概観を示します:

* "threading" --- スレッドベースの並列処理

  * スレッドローカルデータ

  * Thread オブジェクト

  * Lock オブジェクト

  * RLock オブジェクト

  * Condition オブジェクト

  * Semaphore オブジェクト

    * "Semaphore" の例

  * Event オブジェクト

  * Timer オブジェクト

  * バリアオブジェクト

  * "with" 文でのロック・条件変数・セマフォの使い方

* "multiprocessing" --- プロセスベースの並列処理

  * はじめに

    * "Process" クラス

    * コンテキストと開始方式

    * プロセス間でのオブジェクト交換

    * プロセス間の同期

    * プロセス間での状態の共有

    * ワーカープロセスのプールを使用

  * リファレンス

    * "Process" クラスと例外

    * パイプ (Pipe) とキュー (Queue)

    * その他

    * Connection オブジェクト

    * 同期プリミティブ

    * 共有 "ctypes" オブジェクト

      * "multiprocessing.sharedctypes" モジュール

    * マネージャー

      * カスタマイズされたマネージャー

      * リモートマネージャーを使用する

    * Proxy オブジェクト

      * クリーンアップ

    * プロセスプール

    * リスナーとクライアント

      * アドレスフォーマット

    * 認証キー

    * ログ記録

    * "multiprocessing.dummy" モジュール

  * プログラミングガイドライン

    * すべての開始方式について

    * 開始方式が *spawn* および *forkserver* の場合

  * 使用例

* "multiprocessing.shared_memory" --- 異なるプロセスから参照可能な共有
  メモリ

* "concurrent" パッケージ

* "concurrent.futures" -- 並列タスク実行

  * Executor オブジェクト

  * ThreadPoolExecutor

    * ThreadPoolExecutor の例

  * ProcessPoolExecutor

    * ProcessPoolExecutor の例

  * Future オブジェクト

  * モジュール関数

  * 例外クラス

* "subprocess" --- サブプロセス管理

  * "subprocess" モジュールを使う

    * よく使われる引数

    * Popen コンストラクター

    * 例外

  * セキュリティで考慮すべき点

  * Popen オブジェクト

  * Windows Popen ヘルパー

    * Windows Constants

  * 古い高水準 API

  * 古い関数を "subprocess" モジュールで置き換える

    * Replacing **/bin/sh** shell command substitution

    * シェルのパイプラインを置き換える

    * "os.system()" を置き換える

    * "os.spawn" 関数群を置き換える

    * "os.popen()", "os.popen2()", "os.popen3()" を置き換える

    * "popen2" モジュールの関数群を置き換える

  * レガシーなシェル呼び出し関数

  * 注釈

    * Windows における引数シーケンスから文字列への変換

* "sched" --- イベントスケジューラ

  * スケジューラオブジェクト

* "queue" --- 同期キュークラス

  * キューオブジェクト

  * SimpleQueue オブジェクト

* "contextvars" --- コンテキスト変数

  * コンテキスト変数

  * マニュアルでのコンテキスト管理

  * asyncio サポート

以下のモジュールは上記のサービスの一部で使われるサポートモジュールです
:

* "_thread" --- 低水準の スレッド API

* "_dummy_thread" --- "_thread" の代替モジュール

* "dummy_threading" --- "threading" の代替モジュール
