18.5. asyncio — 非同期 I/O、イベントループ、コルーチンおよびタスク

バージョン 3.4 で追加.

ソースコード: Lib/asyncio/


このモジュールは、コルーチン、ソケットあるいはその他リソースを使用した多重 I/O、ネットワーククライアントあるいはサーバーの実行、およびその他関連するプリミティブを使用した、シングルスレッド処理を並行で実行するコードを作成するためのインフラストラクチャを提供します。ここではパッケージ内容の詳細ページの一覧を示しています:

  • さまざまなシステム固有の実装とプラグ可能な イベントループ;
  • トランスポート および プロトコル の抽象化 (Twisted でのそれらに類似);
  • TCP、UDP、SSL、サブプロセス、遅延呼び出しなどの実体サポート (一部はシステム依存);
  • concurrent.futures モジュールの一つに類似するが、イベントループでの使用に適応した Future クラス;
  • 逐次処理の並行コードの作成を支援する、yield from (PEP 380) に基づいたコルーチンおよびタスク;
  • Future およびコルーチンのキャンセルのサポート;
  • threading モジュール内のそれに類似した、シングルスレッド内のコルーチン間で使用する 同期化プリミティブ;
  • ブロッキング I/O 呼び出しを行うライブラリを絶対的かつ積極的に使う必要がある時に、スレッドプールに仕事を投げるためのインタフェース

非同期プログラミングは古典的な 「逐次」 プログラミングと比べるとより複雑です。非同期プログラミングで陥りやすい落とし穴の一覧とその回避方法について説明している Develop with asyncio を参照してください。開発の間は、よくある問題を検出するために デバッグモードを有効にしてください

目次:

参考

asyncio モジュールは PEP 3156 において設計されました。トランスポートとプロトコルの動機付けとなる入門書は PEP 3153 を参照してください。