Pythonの async/await, asyncio の使い道
Pythonのasync/awaitは、C#などと違って、全部一つのスレッド上でやるので、CPUバウンドな処理や、大きなファイルを保存するようなI/Oバウンドな処理を速くするのは無理。
通信を待ってる自分が何もしてない時間に他の処理をやりたいようなときに使える。
CPUバウンドなときはmultiprocessingやconcurrent.futures.ProccessPoolExecutorを使うべし
I/Oバウンドなときはconcurrent.futures.ThreadPoolExecutorを使うべき
async await
このブログがわかりやすい
ゆくゆくは有へと: Pythonの非同期通信(asyncioモジュール)入門を書きました
async awaitでマルチプロセスやマルチスレッドを使う
loop.run_in_executor
を使えば、concurrent.futures.ThreadPoolExecutor
に渡した関数の完了をawait
することができる。
Executing code in thread or process pools