検索
ニュース

PythonのGIL(グローバルインタープリタロック)はソフトウェアにおける世界最大の間違いかPythonの並列処理は幻想

Pythonのマルチスレッドプログラムは、本当の意味で並列には実行されない。代わりに、「並列処理が行われている」という錯覚を生み出す。Pythonの過去の間違いに対処しようと試みる、互換性のないさまざまなPython風ライブラリの作成に、数千時間と数百万ドルが費やされてきた。

Share
Tweet
LINE
Hatena

ムーアの法則と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.

ページトップに戻る