NumPy como escape hatch para cálculos numéricos
Cómo y cuándo delegar operaciones numéricas a NumPy para ejecutar código C en lugar de bytecode Python, con vectorización y broadcasting.
Cómo y cuándo delegar operaciones numéricas a NumPy para ejecutar código C en lugar de bytecode Python, con vectorización y broadcasting.
LOAD_FAST vs LOAD_GLOBAL, attribute lookup, join vs +=, comprehensions y estructuras O(1): técnicas concretas para hot paths identificados con profiling.
Flujo completo de medición con timeit, perf_counter y cProfile para identificar hot paths reales antes de tocar el código.
Cómo usar tracemalloc para comparar snapshots del heap, localizar leaks por línea de código y rastrear referencias vivas con gc.get_referrers.
Cómo medir dónde gasta tiempo tu código con cProfile en desarrollo y py-spy en producción, leyendo correctamente tottime vs cumulative.
Cómo pausar la ejecución de Python con `breakpoint()` y navegar el estado del programa usando los comandos fundamentales de `pdb`.
Cómo usar structlog para emitir logs como JSON con contexto ligado por request, integrando el pipeline de procesadores con la stdlib de Python.
Cómo conectar múltiples handlers con formatters independientes y centralizar toda la configuración del sistema de logging con dictConfig.
Cómo funciona el árbol de loggers en Python, por qué `logging.getLogger(__name__)` es el patrón correcto y qué rompe si se configura mal.
Qué mide realmente coverage y cómo Hypothesis complementa sus límites generando y reduciendo casos que falsifican propiedades invariantes.