PEP-703
注意
運営評議会はPEP 703を受け入れるが、明確な条件付きである: 展開は徐々に行い、できるだけ壊さないようにすること、そして、あまりにも破壊的であることが判明した変更についてはロールバックできること。
概要
CPythonのグローバルインタープリタロック("GIL")は、複数のスレッドが同時にPythonコードを実行することを防ぎます。GILはPythonでマルチコアCPUを効率的に使うための障害です。このPEPでは、CPythonにビルド設定(-disable-gil)を追加することで、グローバルインタープリタロックなしで、インタプリタをスレッドセーフにするために必要な変更を加えて、Pythonコードを実行できるようにすることを提案します。
動機
GILは並行実行の大きな障害です。科学計算タスクの場合、プロセッササイクルのほとんどが最適化されたCPUやGPUカーネルに費やされるため、この並行性の欠如はPythonコードの実行速度よりも大きな問題になることがよくあります。GILはグローバルボトルネックを導入し、他のスレッドがPythonコードを呼び出すと、進行が妨げられる可能性があります。今日、CPythonで並列処理を可能にする既存の方法がありますが、それらの技術には大きな制限があります(Alternativesを参照)。
このセクションでは、GILが科学技術計算、特にAI/MLワークロードに与える影響に焦点を当てます。