「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エンジニアの問題解決に役立つ情報を厳選してお届けします。

Copyright © ITmedia, Inc. All Rights Reserved.

From Informa TechTarget

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

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

news079.jpg

CMOが生き残るための鍵は「生産性」――2025年のマーケティング予測10選【中編】
不確実性が高まる中でもマーケターは生産性を高め、成果を出す必要がある。「Marketing D...

news023.jpg

世界のモバイルアプリ市場はこう変わる 2025年における5つの予測
生成AIをはじめとする技術革新やプライバシー保護の潮流はモバイルアプリ市場に大きな変...

news078.png

営業との連携、マーケティング職の64.6%が「課題あり」と回答 何が不満なのか?
ワンマーケティングがB2B企業の営業およびマーケティング職のビジネスパーソン500人を対...