PythonのGIL(グローバルインタープリタロック)はソフトウェアにおける世界最大の間違いか:Pythonの並列処理は幻想
Pythonのマルチスレッドプログラムは、本当の意味で並列には実行されない。代わりに、「並列処理が行われている」という錯覚を生み出す。Pythonの過去の間違いに対処しようと試みる、互換性のないさまざまなPython風ライブラリの作成に、数千時間と数百万ドルが費やされてきた。
ムーアの法則とPythonの論理の欠陥
プログラミング言語の設計者が「Python」を設計した当時、コンピュータに複数のコアが搭載されることなど想像できなかった。
1980年代から1990年代にかけて、ソフトウェアエンジニアはムーアの法則に大きな信頼を寄せていた。「集積回路上のトランジスタの数は2年ごとに倍増する」というのがムーアの法則だ。そうなれば、当然速度も同じように速くなる。
このムーアの法則が論理通りに帰結すると、比較的短期間でCPUの速度は事実上無限になる。
Pythonのマルチスレッド処理
Pythonの生みの親として知られるグイド・ヴァンロッサム氏も、このムーアの法則に基づいて、「将来コンピュータには安価で限界なく高速なCPUが1基だけ搭載される」という、致命的欠陥がある想定の下、Pythonの全てのマルチスレッド機能を設計した。
Pythonのグローバルインタープリタロック(GIL:Global Interpreter Lock)は、「全ての操作が単一のコア上で実行される」と想定して構築されている。PC、スマートフォン、マイクロデバイスが複数のCPUを搭載することなど全く想定していなかった。
当然ながら、コンピュータのハードウェアは、CPUの速度をどんどん上げていく方向に向かわなかった。チップの設計者は、CPUの速度を上げるのではなく、CPUを小型化し、チップ上に複数のコアを組み込む方向に進んだ。
ヴァンロッサム氏はレックス・フリードマン氏のポッドキャストで次のように述べている。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Pythonライクで高速な新言語「Mojo」が登場、何が魅力?
Modularは、開発中の次世代AIソフトウェア開発プラットフォームにおける2つの新しい技術的ブレークスルーを発表した。統合推論エンジン「Modular Inference Engine」と、Pythonの使いやすさとC言語のパフォーマンスを併せ持つ新プログラミング言語「Mojo」だ。 - Pythonのスーパーセットで高速な新プログラミング言語「Mojo」のローカルダウンロード開始
ModularはPythonの使いやすさとC言語のパフォーマンスを併せ持つ新プログラミング言語「Mojo」がローカルダウンロードできるようになったことを発表した。 - TOP 20にランク入りした「Julia」とは――プログラミング言語の人気ランキング「TIOBEインデックス」に波乱
TIOBE Softwareが発表したプログラミング言語の人気ランキング「TIOBEインデックス」の2023月8月版では、初めて「Julia」がTOP 20にランク入りした。