asyncioとは

  • async/await 構文を使い並行処理のコードを書くためのライブラリ

  • 非同期フレームワークの基盤

    • ネットワークとウェブサーバ

    • データベース接続ライブラリ

    • 分散タスクキュー

  • IOバウンドや高レベルの構造化されたネットワークコードに適している

高レベルAPI

  • 並行にPythonコルーチンを起動し、実行全体を管理する

  • ネットワークIOとIPCを執り行う

  • subprocessesを管理する

  • キューを使ってタスクを分散する

  • 並列処理のコードを同期させる

低レベルAPI

  • 非同期APIを提供するイベントループの作成と管理

    • ネットワーク通信

    • サブプロセスの実行

    • OSシグナル

  • Transportを使った効率的なprotocolを実装

  • コールバックを用いたライブラリとasync/await構文を使ったコードの橋渡し

コルーチン

  • サブルーチンのより一般的な形式

  • サブルーチンには決められた地点から入り、別の決められた地点から出る

  • 多くの様々な地点から入る、出る、再開できる

  • async def 文で実装できる

  • 実態はジェネレータ

Task

  • コルーチンを平行にスケジュール

  • asyncio.create_task 関数でコルーチンをTaskにラップできる

awaitableオブジェクト

  • await式の中で使えるオブジェクト

  • 多くのasyncio APIはawaitableオブジェクトを受け取るように設計されている

  • 3つの種類がある

    • コルーチン

    • Task

    • Future