Solved
PythonのasyncioはGILを回避できると聞いたのですが本当ですか?
Taro · 7/1/2026 · 60 views
asyncioで非同期処理を書けばマルチコアを活かして並列に処理が速くなると思っていたのですが、CPUを使う処理を並べても速くなりませんでした。
Taro · 7/1/2026 · 60 views
asyncioで非同期処理を書けばマルチコアを活かして並列に処理が速くなると思っていたのですが、CPUを使う処理を並べても速くなりませんでした。
それは誤解です。asyncioはGIL(グローバルインタプリタロック)を回避する仕組みではなく、あくまで「I/O待ち(ネットワーク通信やファイル読み書きなど)の間に他のタスクへ処理を譲る」ための仕組みです。CPUを使う計算処理自体は相変わらずシングルスレッド・GILの制約下で1つずつ順番に実行されます。
asyncioが効果を発揮するのは、例えば複数のAPIへのリクエストを同時に投げて、レスポンスを待っている間に他のリクエストの処理を進める、というようなI/Oバウンドな処理です。CPUバウンドな重い計算処理を速くしたい場合は、
といった方法を検討してください。「asyncio = I/Oを賢く待つための仕組み」「multiprocessing = CPU処理を並列化する仕組み」と役割を分けて覚えておくと混同しにくくなります。
✓ This question has been solved