Pythonのマルチスレッドプログラムは、本当の意味で並列には実行されない。代わりに、「並列処理が行われている」という錯覚を生み出す。Pythonの過去の間違いに対処しようと試みる、互換性のないさまざまなPython風ライブラリの作成に、数千時間と数百万ドルが費やされてきた。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
プログラミング言語の設計者が「Python」を設計した当時、コンピュータに複数のコアが搭載されることなど想像できなかった。
1980年代から1990年代にかけて、ソフトウェアエンジニアはムーアの法則に大きな信頼を寄せていた。「集積回路上のトランジスタの数は2年ごとに倍増する」というのがムーアの法則だ。そうなれば、当然速度も同じように速くなる。
このムーアの法則が論理通りに帰結すると、比較的短期間でCPUの速度は事実上無限になる。
Pythonの生みの親として知られるグイド・ヴァンロッサム氏も、このムーアの法則に基づいて、「将来コンピュータには安価で限界なく高速なCPUが1基だけ搭載される」という、致命的欠陥がある想定の下、Pythonの全てのマルチスレッド機能を設計した。
Pythonのグローバルインタープリタロック(GIL:Global Interpreter Lock)は、「全ての操作が単一のコア上で実行される」と想定して構築されている。PC、スマートフォン、マイクロデバイスが複数のCPUを搭載することなど全く想定していなかった。
当然ながら、コンピュータのハードウェアは、CPUの速度をどんどん上げていく方向に向かわなかった。チップの設計者は、CPUの速度を上げるのではなく、CPUを小型化し、チップ上に複数のコアを組み込む方向に進んだ。
ヴァンロッサム氏はレックス・フリードマン氏のポッドキャストで次のように述べている。
Copyright © ITmedia, Inc. All Rights Reserved.