ブロッキング/ノンブロッキング ============================= ブロッキング ------------ - 処理が終了するまで待つ - 待っている間はほかの処理を行えない `time.sleep `_ はブロッキングするので、完了を待ってから次の処理に移る .. literalinclude:: ./code/asyncio/blocking.py :linenos: 実行結果: ``time: 7.009732246398926`` ノンブロッキング ---------------- - ブロッキングされない - ほかの処理ができる `asyncio.sleep `_ はノンブロッキング処理なので、待っている間に次の処理に移れる .. literalinclude:: ./code/asyncio/task.py :linenos: 実行結果: ``time: 5.004534006118774`` ノンブロッキング関数の実装 -------------------------- - `loop.run_in_executor `_ を利用 - `Executor `_ は非同期呼び出しをするためのクラス - `ThreadPoolExecutor `_ - `ProcessPoolExecutor `_ .. literalinclude:: ./code/asyncio/nonblocking_function.py :linenos: 実行結果: ``time: 5.005532503128052`` 練習問題 -------- 次のコードを非同期(ノンブロッキング)に実装してください .. literalinclude:: ./code/asyncio/get_request.py :linenos: