python-performance-optimization について
Pythonアプリケーションの遅さやリソース消費を調べる開発者向けの性能改善ガイドです。CPU、メモリ、コード経路のプロファイリングから、アルゴリズムやI/O、実装の最適化まで扱います。
主な機能
- 01CPUとメモリのプロファイリング
- 02行単位の分析とコールグラフ
- 03実行時間とリソース指標
- 04アルゴリズムとデータ構造の指針
- 05キャッシュ、バッチ処理、並列化の方針
活用シーン
- 01Pythonアプリのボトルネック特定
- 02レイテンシやメモリ使用量の削減
- 03データ処理パイプラインの改善
- 04本番環境の性能評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ full-stack-skills/ python-skills --skill python-performance-optimizationインストール後、Claude Code で/python-performance-optimizationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSE.txtagents/openai.yamlexamples/advanced-usage.mdbasic-usage.mdintegration.mdreferences/advanced-patterns.mddetails.md詳細
出典に関する声明:このスキルの内容は wshobson/agents (MIT License、Copyright (c) 2024 Seth Hobson)を基にしています。ライセンス全文は同じディレクトリの
LICENSE.txtをご覧ください。 使用、変更、再配布の際は、MIT ライセンスの条項に従い、著作権表示を保持する必要があります。
説明
このスキルでは、フルスタック開発に関するベストプラクティスとパターンを紹介します。
name: python-performance-optimization description: cProfile、メモリプロファイラー、パフォーマンスに関するベストプラクティスを使用して、Python コードのプロファイリングと最適化を行います。Python コードの低速化のデバッグ、ボトルネックの最適化、アプリケーションのパフォーマンス改善に使用します。
Python のパフォーマンス最適化
Python コードのプロファイリング、分析、最適化に関する包括的なガイドです。CPU プロファイリング、メモリ最適化、実装のベストプラクティスを取り上げ、パフォーマンスの向上を目指します。
このスキルを使用する場面
- Python アプリケーションのパフォーマンスボトルネックの特定
- アプリケーションのレイテンシと応答時間の短縮
- CPU 負荷の高い処理の最適化
- メモリ消費量とメモリリークの削減
- データベースクエリのパフォーマンス改善
- I/O 操作の最適化
- データ処理パイプラインの高速化
- 高パフォーマンスなアルゴリズムの実装
- 本番環境のアプリケーションのプロファイリング
主な概念
1. プロファイリングの種類
- CPU プロファイリング:時間のかかる関数を特定します
- メモリプロファイリング:メモリ割り当てとメモリリークを追跡します
- 行単位のプロファイリング:行ごとの細かさでプロファイリングします
- コールグラフ:関数の呼び出し関係を可視化します
2. パフォーマンス指標
- 実行時間:処理にかかる時間
- メモリ使用量:メモリ消費量のピーク値と平均値
- CPU 使用率:プロセッサの使用状況
- I/O 待機時間:I/O 操作に費やされる時間
3. 最適化戦略
- アルゴリズム:より優れたアルゴリズムとデータ構造を使用します
- 実装:より効率的なコードパターンを使用します
- 並列化:マルチスレッド化/マルチプロセス化します
- キャッシュ:重複する計算を避けます
- ネイティブ拡張:重要な処理には C/Rust を使用します
クイックスタート
基本的な計測
import time
def measure_time():
"""Simple timing measurement."""
start = time.time()
# Your code here
result = sum(range(1000000))
elapsed = time.time() - start
print(f"Execution time: {elapsed:.4f} seconds")
return result
# Better: use timeit for accurate measurements
import timeit
execution_time = timeit.timeit(
"sum(range(1000000))",
number=100
)
print(f"Average time: {execution_time/100:.6f} seconds")
詳細なパターンと実例
詳細なパターンのドキュメントは references/details.md にあります。上記のナビゲーションでは情報が不足している場合に、このファイルをお読みください。
ベストプラクティス
- 最適化の前にプロファイリングする - 測定して実際のボトルネックを見つけます
- 頻繁に実行される処理に注力する - 最も頻繁に実行されるコードを最適化します
- 適切なデータ構造を使用する - 検索には dict、所属確認には set を使用します
- 早まった最適化を避ける - まず明確さを優先し、その後に最適化します
- 組み込み関数を使用する - C で実装されています
- コストの高い計算をキャッシュする - lru_cache を使用します
- I/O 操作をまとめて行う - システムコールを減らします
- 大規模なデータセットにはジェネレーターを使用します
- 数値演算には NumPy の利用を検討します
- 本番環境のコードをプロファイリングする - 稼働中のシステムには py-spy を使用します
よくある落とし穴
- プロファイリングせずに最適化する
- 不必要にグローバル変数を使用する
- 適切なデータ構造を使用しない
- データの不要なコピーを作成する
- データベース接続プーリングを使用しない
- アルゴリズムの計算量を無視する
- まれにしか実行されないコードパスを過剰に最適化する
- メモリ使用量を考慮しない
対応範囲
✅ 得意なこと
- フルスタック開発に関するベストプラクティス
- コードアーキテクチャの設計ガイダンス
- パフォーマンス最適化の提案
⚠️ 必要な情報
- プロジェクトの具体的なコンテキスト
- 技術スタックの情報
❌ 対応範囲外
- 技術分野以外のビジネス上の意思決定
- 具体的なコード実装(ガイダンスのみを提供します)
ワークフロー
Step 1: 要件分析
プロジェクトの要件と技術的な制約を理解します
Step 2: アーキテクチャ設計
システムアーキテクチャとコンポーネントの分割を設計します
Step 3: 実装ガイダンス
具体的な実装の提案とコードパターンを提供します
Step 4: コードレビュー
コードの品質とベストプラクティスへの準拠状況を確認します
Step 5: 最適化の提案
パフォーマンス最適化と改善の提案を行います
注意点
1. 過剰設計
単純な場面で複雑なデザインパターンを使用するのは避けてください
2. パフォーマンスの軽視
特に本番環境では、パフォーマンスの最適化を軽視しないでください
3. セキュリティへの配慮
常にセキュリティとデータ保護を考慮してください
4. テストカバレッジ
特に境界条件について、十分なテストカバレッジを確保してください
5. ドキュメントの保守
ドキュメントをコードと同期して更新してください