1 ポイント 投稿者 darjeeling 1 시간 전 | まだコメントはありません。 | WhatsAppで共有

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 開発者でも、フリースレッディング性能を直接測定し改善できる道が開かれる

まだコメントはありません。

まだコメントはありません。