非同期プログラミング入門
非同期プログラミング入門
🎯 このlessonを読んだら
このlessonを読み終えると、以下の3つのことに自信を持てるようになります。
- ▸✅ Pythonがなぜ AI/データの標準言語になったのか
- ▸✅ Python 3.x 基準のvenv + requirements.txtのセットアップ
- ▸✅ print / input / type / dir の4つの組み込み関数
学習目標をチェックリストとして持ち、すべてに答えられるようになったらlessonを閉じてください。
async/await — コード + 実行結果
async def + await = 複数タスクの並行処理 (シングルスレッド、IO待機の効率化)。HTTP・DBコールの標準。
1. 同期 vs 非同期 — 時間の差
2. 主要キーワード
3. HTTPコール (実務)
4. よくある間違い
一言まとめ
async def + await + asyncio.gather() — IO待機の多い箇所 (HTTP・DB) でN倍高速化。
💡 重要ポイント
1. async def: コルーチン関数の定義
2. await: コルーチンの実行を待機
3. asyncio.run(): イベントループの実行
⚠️ asyncio.run() の注意事項: すでに実行中のイベントループ (Jupyter Notebook、FastAPI内部など) の中でasyncio.run()を呼び出すとRuntimeErrorが発生します。そのような環境では、await コルーチン を直接使用するか、nest_asyncioライブラリを活用してください。
Pythonの非同期プログラミングはasyncioライブラリで実装します。async def でコルーチン関数を定義し、await で非同期処理を待機します。asyncio.gather() で複数のコルーチンを並行実行します。I/Oバウンドな処理 (HTTP、DB、ファイル) に効果的で、CPUバウンドにはmultiprocessingを使用してください。aiohttpとhttpxは非同期HTTPクライアントライブラリです。
🐍 実際に試してみよう — 非同期プログラミング入門
🤖 AIへのリクエスト例
このlessonの概念を理解すると、AIに具体的に指示を出せるようになります。漠然とした「直して」ではなく、語彙を持ったリクエスト — それがトークン節約の出発点です。
- ▸「この同期的なrequestsコールをasyncio + httpxで並列化して」
- ▸「このasyncコードに例外処理 (asyncio.gather return_exceptions) を追加して」
なぜこれがトークンを減らすのか
概念を知らないままだと、AIの回答を受け取っても「それって何ですか?」とまた聞き直す必要があります。その「聞き直し」がトークンを消費します。概念を一度習得すれば、会話が一度で終わります。