martes, 27 de octubre de 2026 EN · IT · ES
Herald of AI

IAGenerado Noticias de IA para todos, escritas por IA y explicadas de forma sencilla. Modelos, tecnología, cultura y las personas detrás.

Cómo funciona

Cómo el depurador integrado de Python 3.15 revela los puntos calientes ocultos en una aplicación web

Simon Willison usó el nuevo depurador por muestreo de Python 3.15 y GPT-6 Astra Extra High para trazar exactamente dónde gasta su CPU la aplicación de edición web.

Primer plano detallado de un gráfico de barras azul que muestra análisis de datos en papel impreso.
Primer plano detallado de un gráfico de barras azul que muestra análisis de datos en papel impreso. Foto de archivo · Photo: RDNE Stock project / Pexels

Qué se puede hacer con ello

  • Un desarrollador puede usarlo para señalar exactamente dónde gasta una aplicación web en Python la mayor parte de su tiempo de CPU sin instalar ningún paquete adicional 1.
  • Un programador puede pedirle a un asistente de codificación con IA que genere gráficos de llamas y mapas de calor de fuente en lenguaje claro, convirtiendo datos de perfil crudo en diagramas visuales listos para producción 1.
  • Un investigador puede muestrear todos los hilos de una aplicación multi-hilo para evitar perderse el costo real de CPU, ya que la mayor parte del trabajo puede ocurrir en hilos de trabajo en segundo plano en lugar del hilo principal 1.

Un nuevo depurador llega a Python 3.15

Python 3.15 viene con un depurador de muestreo integrado en el módulo profiling.sampling, eliminando la necesidad de herramientas de terceros solo para ver dónde gasta un programa su tiempo. Simon Willison lo puso a trabajar en web-edit, su aplicación de edición web open-source en Python, y los resultados pintaron una imagen sorprendente de los hábitos de CPU de la aplicación.

Gráficos de llamas y mapas de calor, fácil

Para crear las visualizaciones, Willison le encargó la tarea a GPT-6 Astra Extra High ejecutándose dentro del asistente de codificación Codex. La solicitud era sencilla: generar un gráfico de llamas y un mapa de calor a nivel de fuente para la aplicación web-edit bajo una carga de trabajo de edición realista. Los diagramas resultantes muestran bandas gruesas de actividad de CPU concentradas en una única función, y una superposición de color sobre el código fuente que señala exactamente qué líneas son las más calientes.

Los saltos de línea mixtos son el mayor lastre

El depurador registró 15.296 pilas de CPU durante una sesión de edición intensa. Por mucho, el punto caliente dominante fue preserve_endings, una rutina responsable de mantener el estilo original de fin de línea (Unix LF, Windows CRLF o el antiguo Mac CR) intacto cuando se guardan los archivos 1. Esa función sola apareció en el 64,8 por ciento de todas las pilas muestreadas. Dentro de ella, el trabajo pesado lo hacía SequenceMatcher.find_longest_match, que consumía el 38,3 por ciento de las muestras hoja — las funciones finales en cada camino de llamada .

Muestrear todos los hilos importa

Una de las lecciones prácticas más importantes del ejercicio es que muestrear a través de todos los hilos es esencial. Una asombrosa 95,1 por ciento de las pilas registradas provenían de un hilo de trabajo en segundo plano administrado por AnyIO, una biblioteca de concurrency. Un perfil limitado al hilo principal casi habría perdido por completo el verdadero costo de CPU de la aplicación 1. El trabajo de Willison destaca la importancia de muestrear todos los hilos, ya que el 95,1% de las pilas provenían del hilo de AnyIO y habrían sido pasadas por alto por un perfil solo del hilo principal.

Por qué esto importa para los desarrolladores de Python

El depurador de Python 3.15 ahora forma parte de la biblioteca estándar, lo que significa que cualquiera que ejecute una versión reciente de Python puede obtener gráficos de llamas y mapas de calor de fuente sin instalar paquetes adicionales. Combinado con asistentes de codificación con IA como Codex, la barrera para crear visualizaciones de rendimiento de calidad profesional ha bajado drásticamente — un desarrollador puede describir el objetivo en lenguaje claro y obtener diagramas listos para producción. Para cualquiera que mantenga una aplicación web en Python, la conclusión es sencilla: revisa primero tu código de preservación de saltos de línea, y asegúrate de que tu depurador esté mirando todos los hilos.

Correcciones y actualizaciones

  • Corrected on 23 October 2026. An earlier version claimed Willison's demo showed two approaches side by side; the source instead emphasized that sampling all threads was essential because 95.1% of stacks came from AnyIO's worker thread and would have been missed by a main-thread-only profile. An earlier version said GPT-6 was used; the source specifies GPT-6 Astra Extra High. It is accurate to name the full model designation.

Los datos clave

  • Python 3.15 includes a built-in sampling profiler in the profiling.sampling module
  • The preserve_endings function accounted for 64.8% of 15,296 recorded CPU stacks
  • 95.1% of profiles came from an AnyIO worker thread, not the main thread
  • GPT-6 Astra Extra High in Codex was used to generate the flame graph and heatmap visualisations
  • SequenceMatcher.find_longest_match contributed 38.3% of leaf CPU samples

Fuentes

  1. Research: Profiling web-edit with Python 3.15: flame graphs and source heatmaps — simonwillison.net