Python 財団は 2024 年 10 月初旬に Python 3.13 を公開した。本バージョンの主要な技術的進展は、PEP 703 の実装で定義された「Free-threaded」モードの導入であり、これにより GIL(Global Interpreter Lock)が無効化される。
わかりやすく言うと
これまでの Python インタプリタは、マイクが 1 本しかない部屋のようなものだった。複数のスレッドが共存できても、GIL が同時のバイトコード実行を妨げるため、一度に発言できるのは 1 つだけだった。複数のコアを備えたマシンでは、プログラムが並列に計算しようとした途端、利用可能な処理能力の一部が使われないままになる。Python 3.13 はこのロックを任意のものにする。インタプリタを、利用可能なすべての物理コアに計算負荷を分散するようコンパイルできるようになり、ブロックも生じない。ただし留保は小さくない。この機能は実験的な位置づけで提供され、GIL は既定では有効なままであり、C で開発されたライブラリは対応が必要になる。つまりこれは移行の始まりであって、即座の切り替えではない。
バージョン概要
| 項目 | 内容 |
|---|---|
| バージョン | Python 3.13 |
| 提供元 | Python 財団 |
| 公開 | 2024 年 10 月初旬 |
| 主要な技術的進展 | 「Free-threaded」モードの導入 |
| 仕様 | PEP 703 — Making the Global Interpreter Lock Optional in CPython |
| 技術的効果 | GIL(Global Interpreter Lock)の無効化 |
| 実施方法 | 開発者によるインタプリタのコンパイル |
| ステータス | 実験的 — GIL は既定では有効なまま |
| エコシステム側の前提 | C で開発されたライブラリの対応 |
| 目指す範囲 | マルチコアアーキテクチャ上でのスレッドの真の並列実行 |
技術的解説
1. GIL が何をロックしていたか — 歴史的に、GIL は同一の Python インタプリタ内の複数スレッドが同時にバイトコードを実行することを妨げていた。
2. マルチコアプロセッサでの代償 — この制約は、マルチコアプロセッサ上での並列アプリケーションの性能を大きく制限していた。
3. Free-threaded モードが可能にすること — 本バージョンでは、開発者は、利用可能なすべての物理コアに計算負荷を分散するようインタプリタをコンパイルでき、ブロックも生じない。
前と後
| 観点 | GIL ありのインタプリタ | Free-threaded モード(Python 3.13) |
|---|---|---|
| バイトコードの実行 | 同一インタプリタ内で一度に 1 スレッドのみ | スレッドの真の並列実行 |
| 活用されるコア | マルチコアプロセッサ上での並列アプリケーションの性能が大きく制限される | 計算負荷が利用可能なすべての物理コアに分散される |
| ブロック | バイトコード実行に対するグローバルなロック | ブロックは生じない |
| 有効化 | 既定の動作 | 専用にコンパイルしたインタプリタ、実験的な位置づけ |
| C で開発されたライブラリ | 従来どおりの動作 | 対応が必要 |
因果の連鎖
インタプリタに歴史的に存在する GIL → 一度に 1 スレッドしかバイトコードを実行できない → マルチコアプロセッサ上での並列アプリケーションの性能が大きく制限される → PEP 703:ロックを任意化する → Python 3.13 が Free-threaded モードを導入 → インタプリタを、利用可能なすべての物理コアに計算を分散するようコンパイルできる → C で開発されたライブラリの対応 → Python エコシステムの完全なマルチコア最適化への移行
限界と射程
この機能は実験的な位置づけで提供され(GIL は既定では有効なまま)、C で開発されたライブラリの対応を必要とするものの、今回のリリースは Python エコシステムの完全なマルチコア最適化への移行を開始するものである。
出典
2026 年 8 月の事実確認監査で検証した参考資料。本ブリーフの記述は、
これらのページと照合されている。
