# Python Performance Optimization > Profile and optimize Python code using cProfile, memory profilers, and performance best practices. Use when debugging slow Python code, optimizing bottlenecks, or improving application performance. Source: https://skillsagentes.com/skills/wshobson/agents/python-performance-optimization Repository: https://github.com/wshobson/agents Author: wshobson License: MIT Updated: hace 2 meses Context cost: 49 tok installed, 813 tok once triggered, 5.3k tok with every bundled file Bundle: 3 files, 21 KB Permissions requested: none declared ## Install ```bash npx -y skills add wshobson/agents --skill python-performance-optimization --agent claude-code ``` ## What it does - Perfila código Python con cProfile, memory profilers y line profiling - Detecta cuellos de botella de CPU, memoria e I/O - Aplica estrategias de optimización: algorítmica, caching, paralelización, extensiones nativas - Aporta buenas prácticas y errores comunes al optimizar rendimiento en Python ## Use it when - Identificar cuellos de botella de rendimiento en aplicaciones Python - Reducir latencia y tiempos de respuesta - Optimizar operaciones intensivas en CPU o reducir consumo de memoria - Mejorar rendimiento de consultas a bases de datos o pipelines de datos ## What triggers it - "Mi script Python va muy lento, ayúdame a perfilarlo" - "Necesito reducir el uso de memoria de esta aplicación" - "¿Cómo optimizo esta función que se ejecuta millones de veces?" ## Files - SKILL.md — 3 KB - references/advanced-patterns.md — 10 KB - references/details.md — 7 KB ## SKILL.md Reproduced verbatim from wshobson/agents under MIT. This section is the upstream document and is in English. # Python Performance Optimization Comprehensive guide to profiling, analyzing, and optimizing Python code for better performance, including CPU profiling, memory optimization, and implementation best practices. ## When to Use This Skill - Identifying performance bottlenecks in Python applications - Reducing application latency and response times - Optimizing CPU-intensive operations - Reducing memory consumption and memory leaks - Improving database query performance - Optimizing I/O operations - Speeding up data processing pipelines - Implementing high-performance algorithms - Profiling production applications ## Core Concepts ### 1. Profiling Types - **CPU Profiling**: Identify time-consuming functions - **Memory Profiling**: Track memory allocation and leaks - **Line Profiling**: Profile at line-by-line granularity - **Call Graph**: Visualize function call relationships ### 2. Performance Metrics - **Execution Time**: How long operations take - **Memory Usage**: Peak and average memory consumption - **CPU Utilization**: Processor usage patterns - **I/O Wait**: Time spent on I/O operations ### 3. Optimization Strategies - **Algorithmic**: Better algorithms and data structures - **Implementation**: More efficient code patterns - **Parallelization**: Multi-threading/processing - **Caching**: Avoid redundant computation - **Native Extensions**: C/Rust for critical paths ## Quick Start ### Basic Timing ```python 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") ``` ## Detailed patterns and worked examples Detailed pattern documentation lives in `references/details.md`. Read that file when the navigation tier above is insufficient. ## Best Practices 1. **Profile before optimizing** - Measure to find real bottlenecks 2. **Focus on hot paths** - Optimize code that runs most frequently 3. **Use appropriate data structures** - Dict for lookups, set for membership 4. **Avoid premature optimization** - Clarity first, then optimize 5. **Use built-in functions** - They're implemented in C 6. **Cache expensive computations** - Use lru_cache 7. **Batch I/O operations** - Reduce system calls 8. **Use generators** for large datasets 9. **Consider NumPy** for numerical operations 10. **Profile production code** - Use py-spy for live systems ## Common Pitfalls - Optimizing without profiling - Using global variables unnecessarily - Not using appropriate data structures - Creating unnecessary copies of data - Not using connection pooling for databases - Ignoring algorithmic complexity - Over-optimizing rare code paths - Not considering memory usage --- Skills Agentes — https://skillsagentes.com/skills/wshobson/agents/python-performance-optimization