PythonでJITコンパイラとマルチスレッド処理が実験的に実装された「Python 3.13.0」正式公開

今回は「PythonでJITコンパイラとマルチスレッド処理が実験的に実装された「Python 3.13.0」正式公開」についてご紹介します。

関連ワード (一方、方式、欠点等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


スクリプト言語Pythonの最新版となる「Python 3.13.0」正式版が公開されました。

Python 3.13.0

Pythonは昨年(2023年)8月、グローバルインタプリタロック(GIL)を解消する方向で開発を進めていくという方針を明らかにしています。

参考:Pythonがグローバルインタプリタロックの解消へ、マルチスレッド処理の高速化実現

グローバルインタプリタロックとはインタープリタ全体で1つのロックを持つことです。これによりシングルスレッドのプログラムにおいては細かなロック制御が不要となって速度の向上ができる一方、マルチスレッドの平行性は制限されるという欠点があります。

マルチスレッドが実験的実装

これまでPythonはグローバルインタプリタロックを採用してきましたが、今回のPython 3.13.0では新たな方針に沿って、初めて実験的にグローバルインタプリタロックをなくしてマルチスレッド処理を可能にしたフリースレッドモード(free-threaded mode)を実現したビルドが登場しました。

ただしこのフリースレッドモードは、標準的なPythonの実装として公開されるビルドとは別の、「python3.13t」(あるいはpython3.13t.exe)としてビルドされた実行ファイルを用いて、環境変数「PYTHON_GIL」を設定するか、引数「-X gil=1」を設定して起動したときに有効になります。

つまり通常のPythonとして公開されているビルドは、今まで通りのマイナーバージョンアップとなっています。

JITコンパイラも実験的実装

Python 3.13.0ではJIT(Just-in-Time)コンパイラの実験的実装も始まりました。C言語によるPythonの標準的な実装であるCPythonに対して「–enable-experimental-jit」オプションを付けてビルドした場合にJITコンパイラが有効になります。

JITコンパイラとは、スクリプト実行時にインタプリタによる実行と並行してバックグラウンド処理でネイティブバイナリを生成し、再び同じ処理が実行される際にはネイティブバイナリを実行することでより高速な処理を実現する手法です。

JavaScriptやRubyなど人気の高いプログラミング言語の多くは処理速度を高速化するためにすでにJITコンパイラを搭載しており、それがようやくPythonにも採用されることとなりました。

Pythonで採用されるJITコンパイラは、コピー&パッチ方式と呼ばれる2021年に提案された新しい方式のJITコンパイラです。仕組みについては下記の記事で紹介しているのでご参照ください。

参考:次期Python、ついにJITコンパイラ搭載の見通し。「copy-and-patch」と呼ばれる新たなJITコンパイラの仕組みとは?

Pythonでは過去のメジャーバージョンアップにおいて言語仕様の互換性を欠いたことでコミュニティに大きな混乱をもたらしたことがありました。今回のJITコンパイラやマルチスレッドの導入はそうしたことを教訓に、互換性の維持に関して非常に慎重に進めているように見えます。

WASI、iOS、Androidをサポート

今回サポートされるプラットフォームとして、WASI(WebAssembly System Interface)、iOS、Androidが加わりました。

Pythonがサポートするプラットフォームは優先度に応じてTier1、Tier2、Tier3に分かれています。

Tier1はコア開発者の全員がリリースを持つ最も優先度が高いプラットフォームで、Windows(x86-64)、Mac(x86-64、Arm)、Linux(x86-64)が設定されています。

Tier2は少なくともコア開発者2名がサポートするプラットフォームで、WASIサポートはここに設定されています。

Tier3は少なくともコア開発者1名がサポートするプラットフォームで、Tier1とTier2ではリリース時にビルドが失敗した場合にはリリースそのものが中止されるのに対し、Tier3ではリリースは中止されない優先度で、iOSとAndroidはここに設定されました。

今後Pythonの標準的な実装であるCPythonでWASIやiOS、Androidのサポートが強化されていくことが期待されます。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
Google、目の前に相手が実在するかのような「Project Starline」発表 精細な3Dモデルのリアルタイム伝送と裸眼立体視で :Google I/O 2021
ネットトピック
2021-05-20 02:56
RubyのJava実装「JRuby」、大口スポンサーのRed Hatが離脱で新たなスポンサーや寄付を募集。有償サポートも開始
Java
2024-07-05 02:17
テクノロジースキル需要は2023年も堅調–非技術者にも有利に働く基本スキル
IT関連
2022-12-01 23:38
米石油パイプライン大手へのサイバー攻撃、犯人はロシアを拠点とする集団「DarkSide」とFBIが発表
セキュリティ
2021-05-12 18:19
パーソナライズされた栄養改善アドバイスを提供するZoe、ビッグデータと機械学習で食品に対する身体の反応を予測
ヘルステック
2021-06-28 06:05
マイクロソフト「.NET 6」初めてのプレビュー版リリース。Xamarin統合、マルチプラットフォームUI、Blazorでデスクトップアプリ、Apple M1ネイティブなど
.NET
2021-02-24 03:32
Excel 365からノーコードでSalesforceやkintone、Snowflakeなど150以上のデータソースに双方向接続可能、CData Connect Cloudが新機能
CData
2023-07-27 10:53
三井不動産リアルティ、住宅ローン業務システムをマルチクラウド化
IT関連
2023-11-09 18:44
「マネーフォワード クラウド契約」、契約データ自動取り込み機能を提供
IT関連
2022-04-06 00:43
社員が日々サービスの品質向上を考えるNTTグループを創造–NTT・島田社長
IT関連
2023-01-06 18:13
テスト自動化クラウドサービス「Autify」、iOSネイティブアプリに対応 実機は不要
クラウドユーザー
2021-01-30 01:01
[速報]オラクル、ホワイトボックス化したクラウド一式をSIerに提供する「Oracle Alloy」発表。SIerがカスタマイズし自社ブランドでのサービス実現。Oracle CloudWorld 2022
Oracle Cloud
2022-10-20 23:16
IT系上場企業の平均年収を業種別にみてみた 2022年版[後編] ~ パッケージソフトウェア系、SI/システム開発系、クラウド/キャリア系企業
働き方
2022-07-19 14:44
NFTとは何か?デジタル収集家たちのなぜ今、熱狂しているのか?
ブロックチェーン
2021-04-11 20:07