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

この章で説明するモジュールは、コードの並行実行をサポートします。 適切
なツールは、実行するタスク (CPU バウンドか I/O バウンドか) と、好みの
開発スタイル (イベント駆動の協調的マルチタスクかプリエンプティブマルチ
タスクか) によって異なります。 概要は以下のとおりです:

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

  * はじめに

  * GIL とパフォーマンスに関する考慮事項

  * リファレンス

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

    * Thread オブジェクト

    * Lock オブジェクト

    * RLock オブジェクト

    * Condition オブジェクト

    * Semaphore オブジェクト

    * "Semaphore" の使用例

    * Event オブジェクト

    * Timer オブジェクト

    * Barrier オブジェクト

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

  * イテレータの同期

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

  * はじめに

    * "Process" クラス

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

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

    * プロセス間の同期

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

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

  * リファレンス

    * グローバルな開始方式

    * "Process" クラスと例外

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

    * その他

    * Connection オブジェクト

    * 同期プリミティブ

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

      * "multiprocessing.sharedctypes" モジュール

    * マネージャー

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

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

    * Proxy オブジェクト

      * クリーンアップ

    * プロセスプール

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

      * アドレスフォーマット

    * 認証キー

    * ログ記録

    * "multiprocessing.dummy" モジュール

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

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

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

  * 使用例

* "multiprocessing.shared_memory" --- プロセス間で直接アクセス可能な共
  有メモリ

* "concurrent" パッケージ

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

  * Executor オブジェクト

  * ThreadPoolExecutor

    * ThreadPoolExecutor の例

  * InterpreterPoolExecutor

  * ProcessPoolExecutor

    * ProcessPoolExecutor の例

  * Future オブジェクト

  * モジュール関数

  * 例外クラス

* "concurrent.interpreters" --- 同じプロセス内の複数のインタープリタ

  * 主な注意点

  * はじめに

    * 複数のインタープリタと分離

    * インタープリタ内での実行

    * 並行処理と並列処理

    * インタープリタ間の通信

    * オブジェクトの「共有」

  * リファレンス

    * インタープリタオブジェクト

    * 例外

    * インタープリタ間での通信

  * 基本的な使い方

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

  * "subprocess" モジュールの使用

    * よく使われる引数

    * Popen コンストラクター

    * 例外

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

  * Popen オブジェクト

  * Windows Popen ヘルパー

    * Windows の定数

  * 古い高水準 API

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

    * **/bin/sh** シェルのコマンド置換を置き換える

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

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

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

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

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

  * 注釈

    * タイムアウトの動作

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

    * "posix_spawn()" の使用を無効にする

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

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

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

  * キューオブジェクト

    * タスクの完了を待つ

    * キューを終了する

  * SimpleQueue オブジェクト

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

  * コンテキスト変数

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

  * asyncio サポート

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

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