「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 マーケティング新着記事

news099.jpg

ソーシャルメディア利用年齢規制でMetaより損をするのは?
ソーシャルメディアの利用は16歳以上に制限されるべきなのだろうか。そうだとしたら、実...

news205.jpg

台湾の旅行者の77.4%、米国の旅行者の53.6%は1年以内に日本を再訪したい――JTB総合研究所調査
訪日インバウンド旅行者の中にはリピーターとなる人も少なくありません。そこで、次回の...

news163.jpg

電通グループがRobloxと組んで次世代コンテンツクリエイターを支援 その背景は?
電通グループがゲームプラットフォーム「Roblox」を活用した次世代クリエイター支援プロ...