たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

FastAPI 並行処理のキホン

デフォルト設定の場合、シングルプロセス。
なので non-parallel concurrent になる。

path op を def で定義した場合、thread pool に突っ込まれる。ブロッキング I/O をスレッド切り替えで逃がせるのでこれは合理的な設計。とはいえ Python の GIL がデフォルトで 5 msec 掴み続けるので、小さなブロッキングが発生してしまう。CPUリソースの意味でもスレッド切り替えコストが掛かってる。

なので async I/O 化してシングルスレッドで回すのが1番効率が良い。ゆえに path op を async def で定義した場合、単純に call される (thread pool 使わない)。