Python 3.15の新しいサンプリングプロファイラ Tachyon の紹介
(blog.changs.co.uk)Python 3.15に導入されたサンプリングプロファイラ Tachyon により、マルチスレッドのボトルネックを可視化し、OOP 抽象化の性能上の落とし穴を捉えた事例の紹介
Tachyonとは?
Python 3.15で標準ライブラリに追加されるサンプリングベースのプロファイラ。
従来のプロファイラが見過ごしてきた フリースレッディング(GIL-free)環境をネイティブにサポートしていることが核心。
主な特徴
- サンプリング方式による 低オーバーヘッド
- 全スレッド同時プロファイリング をサポート (
-aオプション) - 実行中のプロセスへ リモート接続(attach) が可能
- フレームグラフなど 多様な出力フォーマット をサポート
- async対応 — asyncio プログラムにも適用可能
実行方法
sudo -E uv run -p 3.15.0a6t python -m profiling.sampling run \
-a --flamegraph -o profile.html -r 20khz your_script.py
# -a : メインスレッド以外の全スレッドをプロファイリング
# -r 20khz : 1秒あたり20,000回サンプリング(精度調整可能)
# 出力結果 : フレームグラフ HTML — 赤いカラムがホットパス
実際の適用事例 — フリースレッディングのボトルネック検出
最適化前 — __getitem__ を通じた Grid アクセスが全実行時間の 75% を占有
https://blog.changs.co.uk/images/unoptimised-bench.png
最適化後 — 内部 tuple への直接アクセスに変更後、5.32%まで減少
https://blog.changs.co.uk/images/optimised-bench.png
なぜ重要か
- これまでフリースレッディングの性能問題は「勘で探す」しかなかった
- Tachyon は どこでスレッドが詰まっているのかを視覚的に 示す初の公式ツール
- 一般的な Python 開発者でも、フリースレッディング性能を直接測定し改善できる道が開かれる
まだコメントはありません。