HarmonyFidelisHarmonyFidelis
ログイン
ニュース主要プロジェクト主要機関アカデミー

Python 3.13:GIL がオプションに(実験的な free-threading モード)

Python 3.13 は Free-threaded モードを導入し、マルチコアアーキテクチャ上でスレッドの真の並列実行を可能にする。

Source: peps.python.org

Python 3.13:GIL がオプションに(実験的な free-threading モード)

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 月の事実確認監査で検証した参考資料。本ブリーフの記述は、
これらのページと照合されている。

  1. PEP 703 — Making the Global Interpreter Lock Optional in CPython
  2. What's New In Python 3.13 — 公式ドキュメント
  3. Python 3.13.0 release — python.org