「Python 3.14」で公式サポートに移行したフリースレッド版Pythonとは? その進化の道筋Python最新情報キャッチアップ

いよいよPython 3.14.0が正式リリースされた。その新機能の中からフリースレッド版Pythonが公式サポートされるようになるまでの道のりと今後の展望について、ドキュメントを基に簡潔にまとめる。

» 2025年10月09日 05時00分 公開
[かわさきしんじDeep Insider編集部]
「Python最新情報キャッチアップ」のインデックス

連載目次

 2025年10月7日に正式リリースされたPython 3.14の新機能や変更点を記した「What's new in Python 3.14」ではリリースハイライトの先頭に「PEP 779: Free-threaded Python is officially supported」とある(以下では「Free-threaded Python」を「フリースレッド版Python」と表記する)。

フリースレッド版Pythonがデフォルトの実装となるまでの道のり フリースレッド版Pythonがデフォルトの実装となるまでの道のり

 フリースレッド版Pythonは、複数あるCPUコアを活用することで、Pythonの並列処理性能を大きく上昇させる。これはPythonにとっての大きな進化となる。以下では幾つかのPEPとそれらを受理/承認するアナウンスを基にフリースレッド版Pythonがどのような経路を経て、公式サポートに至ったか、これから先の展望はどうなっているのかをまとめる。

フリースレッド版Pythonへの移行の背景

 フリースレッド版Pythonとは、Pythonで並列処理を実現する上での足かせとなってきたGIL(Global Interpreter Lock)を無効化したPython処理系のことである。

 1990年代初頭にGILが導入された時点では、PCのCPUはシングルコアが当たり前の時代であり、マルチコアなCPUを使って、CPUに強く依存する処理を並列に実行することは想定されていなかった。そうした中で、Pythonでマルチスレッド処理を行う際に競合状態やデッドロックを避けるためのシンプルな方策として導入されたのがGILといえる。

 GILは「Pythonで書かれたマルチスレッドで動作するコードを実行する場合、同時に実行されるPythonコードは1つだけ」という制約をもたらす。上で述べたような競合状態やデッドロックの心配は減るが、CPUが持つ複数のコアを活用して、計算などの処理を並列に行いたいというときには逆に足を引っぱることになる。マルチコアCPUが一般的になった現在では、これはPythonが持つ足かせとなりつつあったことから、脱GILが段階的に進められていくことになった。

移行に関する3つのフェーズ

 脱GIL化の取り組みはPEP 703「Making the Global Interpreter Lock Optional in CPython」にまとめられており、2023年10月にPythonの将来の舵取りを担うステアリングカウンシルによって受理された。ただし、その際のアナウンスでは、脱GIL化を次のように段階を踏んで進めることになっている。

  • フェーズ1:フリースレッド版Pythonを実験的にビルド/配布する
  • フェーズ2:フリースレッド版Pythonを公式にサポートするが、あくまでもオプション扱いとするフェーズ
  • フェーズ3:フリースレッド版Pythonをデフォルトとするフェーズ

 フェーズ1は、フリースレッド版Pythonのビルドや配布が可能だが、デフォルトではインストールされず、あくまでも実験的なビルドという状況になる。macOSやWindowsではPython 3.13のインストーラーにそうしたビルドが含まれていたことをご存じの方もいると思うが、フェーズ1はPython 3.13で実現されている。

 そして、フェーズ2に移行するための要件をまとめたものとしてPEP 779がある。

PEP 779とその承認が意味するもの

 GILありのPythonではシンプルな形でスレッドセーフを実現していたが、フリースレッド版PythonではGILなしでスレッドセーフを実現しながら、複数のスレッドが複数のCPUコアを活用できるようにするために、GILありのPythonと比べてコスト(速度低下やメモリ使用量の増加)が発生する。また、安定的なAPI/ABIや開発者に向けたフリースレッド版Pythonに関する内部ドキュメントも必要になる(ABIとは「Application Binary Interface」のこと。主にC APIで書かれた拡張モジュールのバイナリレベルでの互換性を保証する規約)。PEP 779ではそのような要件がまとめられるとともに、Python 3.14での実現状況や達成に向けた見積もりが語られている。

 具体的には、フェーズ2移行に向けた性能要件としてはGILありのPythonと比較して「最大15%のパフォーマンス低下」「最大20%のメモリ使用量の増加」を許容可能な上限としている。一方で、APIとドキュメントに関しては「APIについては大きな変更は必要ない」「フリースレッド版Pythonについての内部ドキュメントについてもPython 3.14のリリースには間に合うだろう」とされている。

 PEP 779は2025年6月に承認された(同時にフェーズ2の間に解決すべき要件がまとめられてもいる)。これにより、Python 3.14からフリースレッド版Pythonへ移行するためのフェーズ2が始まることになった。

今後の展望

 ただし、Python 3.15でフリースレッド版Pythonが「デフォルト」となる、つまりフェーズ3への移行が行われるかどうかはまだ決まっていない。Python 3.14は「フェーズ2の始まり」である。フェーズ2の間にPythonのエコシステムがフリースレッド版Pythonへの対応を進めることが、フェーズ3への移行を決定する一番の要因だからだ。

 PEP 779を承認するアナウンスでは、ステアリングカウンシルはフェーズ2の間に以下の要件に対処する必要があると考えている。

  1. ABIとAPIの安定化:既存のAPI/ABIを破壊する変更は避ける。サードパーティライブラリメンテナが安心して使えるようなフリースレッド専用のC API、安定したABIをPython 3.15までに定義する
  2. 新規開発の互換性:CPythonでの新しい実験的プロジェクトは、フリースレッド版ビルドを基盤とし、互換性を持つこと
  3. 性能の厳格な管理:15%を超えるパフォーマンス低下、15%(上限20%)を超えるメモリ使用量の増加が見込まれる変更については事前にSCとの議論が必須
  4. ドキュメントの整備:ユーザー、Python/C API開発者、CPython開発者向けのドキュメントを充実させる
  5. 高レベル並行性の準備:専門知識がなくても安全で便利に使える新しい並行性プリミティブの検討を始めること
  6. ベンチマークの徹底:性能、メモリ、正確性についての主張は全て再現可能なテストで裏付け、コミュニティのベンチマーク貢献を推奨する

 この他にもサードパーティライブラリのフリースレッド版Python対応がさらに進められることも重要だ。

 PEP 779の承認時に挙げられたこれらの要件が満たされた時点で、フェーズ3への移行が承認され、その次のバージョンのPythonからは「フリースレッド版がデフォルト」となると思われる。また、GILありのPythonについても、いつそれが削除されるかは決まっていない。フリースレッド版Pythonがデフォルトになり、大多数の人がこれを使うようになった時点で、GILありのPythonの削除についても検討が始まるはずだ。だが、当面はGILありのPythonとフリースレッド版Pythonが並行して使われることになるだろう。


HPかわさき

 どうも。HPかわさきです。

 今回はフリースレッド版Pythonへの移行についてまとめました。3つのフェーズに分けて段階的に移行を進めていくのは、互換性の確保や、サードパーティライブラリでのフリースレッド版Pythonのサポートという面ではとてもよいことだと筆者は考えています。Python 2からPython 3への移行でもかなりの時間をかけていたという印象がありますが、フリースレッド版Pythonについても慎重かつ確実にPythonを進化させていこうという意志が感じられます。

 Pythonのコードから複数のCPUコアを活用するには、GILから脱してフリースレッド版Pythonへと進化する必要があります。これからの展開にも大きく期待しましょう。


「Python最新情報キャッチアップ」のインデックス

Python最新情報キャッチアップ

Copyright© Digital Advantage Corp. All Rights Reserved.

アイティメディアからのお知らせ

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。