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