「Python」次期バージョンがもたらすのは“改良”よりむしろ地獄?PythonからGILを取り除く是非【中編】

「GIL」を「Python」から削除する提案が承認されたことに伴い、Pythonのエコシステムを支えるライブラリ管理者にも新たな課題が生まれようとしている。どのような影響を与え得るのか。

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

 プログラミング言語「Python」は、簡潔な文法や豊富なライブラリで人気を博している。同時に、複数のCPUコアを効率的に利用することが制限されている問題も抱えている。これはCPython(Pythonの標準実装)が持つ「GIL」(Global Interpreter Lock)に起因する問題だ。

 GILはデータの整合性を保つ一方で、並列処理の制約となっている。この問題を解決するため、PythonコミュニティーはGILの削除を検討し始めた。ただしこの変更は新たな課題をもたらす可能性がある。なぜ問題になり得るのか。本稿はその理由のうち3つを取り上げる。

「GILなしPython」がもたらすのは改良よりむしろ地獄?

理由2.複数バージョンをサポートする必要がある

 GILを廃止したPythonに切り替えるPythonエンジニアが増えれば、人気のPythonライブラリ(プログラム部品群)の管理者もそれに従うことをコミュニティーは期待する。一方でこうしたライブラリには根強いユーザーがいるため、GILがあるバージョンのPythonでも動作するようサポートを継続する必要がある。その結果、ライブラリの管理者は、2つの異なる仕組みを持つディストリビューション(配布パッケージ)を同時にサポートするという望ましくない状況に追い込まれる可能性がある。

理由3.外部関数と連携できなくなる

 Pythonの強みの一つは、「Java」や「C++」などのプログラミング言語で作成された関数やプロシージャ(複数の処理を1つにまとめたプログラム)を呼び出せることだ。こうした外部関数は現状、安全なシングルスレッド方式で呼び出されることを前提として実装されている。GILを廃止したPythonを正しく機能させるには、こうした外部関数も全て更新しなければならない。

理由4.stop-the-worldへの対処が必要になる

 複数のスレッドが関与するメモリ管理は、総じて難しいものだ。GILがないPythonで、不要なデータを削除して空き容量を増やす「ガベージコレクション」(GC)を実現するには、メモリを再利用するためにあるイベントが必要になる。それが2回の「stop-the-world」(STW)だ。

 STWはプログラムを完全に停止させるイベントだ。プログラムの一時停止時間は15秒になることもある。Pythonエンジニアにとって、そのような時間に及ぶプログラムの停止は受け入れがたいはずだ。


 次回は、5つ目と6つ目の理由を取り上げる。

TechTarget発 エンジニア虎の巻

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

Copyright © ITmedia, Inc. All Rights Reserved.

From Informa TechTarget

お知らせ
米国TechTarget Inc.とInforma Techデジタル事業が業務提携したことが発表されました。TechTargetジャパンは従来どおり、アイティメディア(株)が運営を継続します。これからも日本企業のIT選定に役立つ情報を提供してまいります。

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

news067.jpg

「単なるスポーツ広告ではない」 Nikeの27年ぶりスーパーボウルCMは何がすごかった?
Nikeが27年ぶりにスーパーボウルCMに復帰し、注目を集めた。

news082.png

Z世代と上の世代で利用率の差が大きいSNSトップ3 1位「TikTok」、2位「Instagram」、3位は?
サイバーエージェント次世代生活研究所が実施した「2024年Z世代SNS利用率調査」の結果が...

news187.jpg

主戦場は「テレビ画面」へ YouTube20周年でCEOが公開書簡
20周年を迎えるYouTubeが、クリエイターとユーザーの双方にとってより魅力的で革新的なプ...