「Python」次期バージョンがもたらす“改良”ではない危険な問題PythonからGILを取り除く是非【前編】

「Python」の実行速度向上を目指した「GIL」の廃止が、一部のエンジニアの間で議論を呼んでいる。なぜPythonへの悪影響が懸念されているのか。

2024年09月13日 07時00分 公開
[Darcy DeCluteTechTarget]

 プログラミング言語「Python」のコミュニティーは、CPython(Pythonの標準実装)の処理速度を向上させ、複数のCPUコアをまたがるスレッド処理を実現させるため、新機能や仕様に関する提案文書「PEP 703」を承認した。PEP 703は、一部のエンジニアの間で悪名高い「GIL」(Global Interpreter Lock)の廃止を掲げている。GILは、CPythonがメモリ管理やデータ構造の安全性を確保するために採用している仕組みだ。

 ただしGILの廃止は、Pythonユーザーに深刻な問題をもたらす可能性がある。GILの廃止に疑問を呈するPythonエンジニアは、どのような懸念を抱いているのか。

「GILなしPython」がもたらす危険な問題

 GILの廃止は、幾つかの深刻な問題をもたらす可能性がある。その影響と理由をまとめた。1つ目は次の通り。

理由1.実行速度が低下する

 現状の仕様だと、原則としてPythonプログラムは一度に1つのスレッド(プログラムの実行単位)のみがCPUを利用できる「シングルスレッド」処理になる。この場合、コンパイラ(ソースコードを機械語に変換するプログラム)設計者は、複数のプロセスが互いの処理終了を待って処理が進まなくなる「デッドロック」や、データの競合を懸念する必要がない。

 一方で、一度に複数のスレッドがCPUを利用できる「マルチスレッド」処理を許容し、マルチコアCPU搭載システムで実行することを想定するプログラミング言語は、データやアクセスに対するロックを導入しなければならない。CPUがこうしたロックを処理するには、それなりに時間がかかる。GILを廃止したPythonはロックを導入することになるため、シングルスレッドアプリケーションの実行速度が低下する恐れがある。

 PEP 703自体もこの問題を認めており、提案文書には次のように記されている。「本PEPで提案する変更によって、GILを無効にしたPythonでは、実行時のオーバーヘッド(処理の負荷)が大きくなる。つまりシングルスレッドアプリケーションのパフォーマンスが低下する」


 次回は、2〜4つ目の理由を紹介する。

TechTarget発 エンジニア虎の巻

米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。

ITmedia マーケティング新着記事

news096.jpg

NIKE vs. HOKA ランニングシューズ市場での熱い戦いの行方は?(無料eBook)
市場リーダーのナイキやアディダスの業績が振るわない一方で、「HOKA」など新興ブランド...

news037.png

「ECプラットフォーム」売れ筋TOP10(2024年10月)
今週は、ECプラットフォーム製品(ECサイト構築ツール)の国内売れ筋TOP10を紹介します。

news037.jpg

「同じCMばっかり」を逆手に ペプシコが実践した超斬新なクリエイティブ発想の意図は?
「Advertising Week New York」では、2024年に米国で話題を呼んだスナック菓子「Lay's」...