2025-01-23 Python 3.13の新機能(その1) PEP 703: フリースレッドモード
2024年10月7日にリリースされたPython 3.13の概要を紹介します。
Python 3.13ではPythonのプログラミング言語としての仕様に大きな変更はありませんでしたが、将来のPythonの実行環境に大きな影響を与える、大きな変更が導入されました。
PEP 703: フリースレッドモード¶
Python 3.13では、実験的な機能として、フリースレッドモードが導入されました。従来のPythonには、グローバルインタプリタロック(GIL)があり、マルチスレッドでのパフォーマンスが向上しないという問題がありました
2024-04-12 Python 3.12の新機能(その7) PEP 709: 内包式のインライン化
Python3.0以降では、リスト内包でエラーが発生すると、トレースバックに <listcomp>
という不思議な関数名が表示されることがありました。
>>> def func():
... [1/0 for i in range(10)]
...
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in func
File "<stdin>", line 2, in <listcomp>
ZeroDivisionError: di
2024-04-10 Python 3.12の新機能(その6) PEP 683: 固定参照カウントによる永続オブジェクト
Pythonは、すべての変数などが参照しているオブジェクトを正確に把握し、それぞれのオブジェクトが参照されている数を厳密に記録しています。この、記録されている参照の数を、参照カウント と言います。参照カウントが 0 になると、そのオブジェクトはすでに利用されていないことが明らかなので、Pythonはそのオブジェクトを開放します。
オブジェクトの参照カウントは、sys.getrefcount() で調べられます。
次の例では、sys.getrefcount()
を使って、True
オブジェクトが参照されている数を調べています
2024-04-10 Python 3.12の新機能(その5) PEP 684: インタープリター別GIL
Python3.11で開始された Faster CPython: CPython 高速化計画ですが、予定されていた Tracing optimizerが追加されなかったこともあり、残念ながらPython3.12では大きなパフォーマンスの改善は見られませんでした。
しかし、将来の高速化に向けて、大きな機能追加がありました。
サブインタープリター¶
Pythonのあまり知られていない機能に、サブインタープリター があります。これは一つのプロセス内で複数のPython実行環境を作成し、複数のアプリケーションを同時に動かすことができる
2023-10-10 Python 3.12の新機能(その4) PEP 688: バッファープロトコルをPythonで利用可能に
Pythonで最も有名なライブラリの一つに、Numpy があります。Numpyは科学技術計算、機械学習、AI、画像処理など、多岐にわたる分野で利用され、今日のPythonの普及に大きく貢献しています。
Numpyは独立したライブラリですが、もともとはPythonの標準ライブラリに組み込む予定で開発が始まりました。しかし、プロジェクトが大規模化したため、最終的に独立したライブラリとして提供されることになりました。この経緯から、NumpyはPython言語と密接な関係を持ち、その設計や実装に大きな影響を与えてきまし