mcpField
P
python-performance-optimization

python-performance-optimization

github.com/full-stack-skills開発397 回インストール5 週間前に更新
リポジトリ

python-performance-optimization について

Pythonアプリケーションの遅さやリソース消費を調べる開発者向けの性能改善ガイドです。CPU、メモリ、コード経路のプロファイリングから、アルゴリズムやI/O、実装の最適化まで扱います。

主な機能

  1. 01CPUとメモリのプロファイリング
  2. 02行単位の分析とコールグラフ
  3. 03実行時間とリソース指標
  4. 04アルゴリズムとデータ構造の指針
  5. 05キャッシュ、バッチ処理、並列化の方針

活用シーン

  1. 01Pythonアプリのボトルネック特定
  2. 02レイテンシやメモリ使用量の削減
  3. 03データ処理パイプラインの改善
  4. 04本番環境の性能評価

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/full-stack-skills/python-skills --skill python-performance-optimization

インストール後、Claude Code で/python-performance-optimizationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE.txt
agents/
openai.yaml
examples/
advanced-usage.md
basic-usage.md
integration.md
references/
advanced-patterns.md
details.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 にあります。上記のナビゲーションでは情報が不足している場合に、このファイルをお読みください。

ベストプラクティス

  1. 最適化の前にプロファイリングする - 測定して実際のボトルネックを見つけます
  2. 頻繁に実行される処理に注力する - 最も頻繁に実行されるコードを最適化します
  3. 適切なデータ構造を使用する - 検索には dict、所属確認には set を使用します
  4. 早まった最適化を避ける - まず明確さを優先し、その後に最適化します
  5. 組み込み関数を使用する - C で実装されています
  6. コストの高い計算をキャッシュする - lru_cache を使用します
  7. I/O 操作をまとめて行う - システムコールを減らします
  8. 大規模なデータセットにはジェネレーターを使用します
  9. 数値演算には NumPy の利用を検討します
  10. 本番環境のコードをプロファイリングする - 稼働中のシステムには py-spy を使用します

よくある落とし穴

  • プロファイリングせずに最適化する
  • 不必要にグローバル変数を使用する
  • 適切なデータ構造を使用しない
  • データの不要なコピーを作成する
  • データベース接続プーリングを使用しない
  • アルゴリズムの計算量を無視する
  • まれにしか実行されないコードパスを過剰に最適化する
  • メモリ使用量を考慮しない

対応範囲

✅ 得意なこと
  • フルスタック開発に関するベストプラクティス
  • コードアーキテクチャの設計ガイダンス
  • パフォーマンス最適化の提案
⚠️ 必要な情報
  • プロジェクトの具体的なコンテキスト
  • 技術スタックの情報
❌ 対応範囲外
  • 技術分野以外のビジネス上の意思決定
  • 具体的なコード実装(ガイダンスのみを提供します)

ワークフロー

Step 1: 要件分析

プロジェクトの要件と技術的な制約を理解します

Step 2: アーキテクチャ設計

システムアーキテクチャとコンポーネントの分割を設計します

Step 3: 実装ガイダンス

具体的な実装の提案とコードパターンを提供します

Step 4: コードレビュー

コードの品質とベストプラクティスへの準拠状況を確認します

Step 5: 最適化の提案

パフォーマンス最適化と改善の提案を行います

注意点

1. 過剰設計

単純な場面で複雑なデザインパターンを使用するのは避けてください

2. パフォーマンスの軽視

特に本番環境では、パフォーマンスの最適化を軽視しないでください

3. セキュリティへの配慮

常にセキュリティとデータ保護を考慮してください

4. テストカバレッジ

特に境界条件について、十分なテストカバレッジを確保してください

5. ドキュメントの保守

ドキュメントをコードと同期して更新してください

コメント