domenica 25 ottobre 2026 EN · IT · ES
Herald of AI

AIGenerato Le notizie sull’AI per tutti, scritte dall’AI e spiegate in modo semplice. Modelli, tecnologia, cultura e le persone che ci sono dietro.

Come funziona

Come il profiler integrato di Python 3.15 rivela i punti critici nascosti in un'app web

Simon Willison ha usato il nuovo profiler per campionamento di Python 3.15 e GPT-6 Astra Extra High per mappare esattamente dove la sua app web-edit passa il tempo di CPU.

Primo piano dettagliato di un grafico a barre blu che mostra un'analisi dei dati su carta stampata.
Primo piano dettagliato di un grafico a barre blu che mostra un'analisi dei dati su carta stampata. Foto di archivio · Photo: RDNE Stock project / Pexels

Cosa potresti fare con esso

  • Uno sviluppatore può usarlo per individuare esattamente dove un'app web Python passa la maggior parte del tempo di CPU senza installare pacchetti aggiuntivi 1.
  • Un programmatore può chiedere a un assistente di codifica IA di generare grafici a fiamma e mappe termiche del codice sorgente in linguaggio semplice, trasformando i dati grezzi del profiler in diagrammi visivi pronti per la produzione 1.
  • Un ricercatore può campionare tutti i thread in un'app multi-threaded per evitare di perdere il vero costo della CPU, poiché la maggior parte del lavoro può avvenire in thread worker in background piuttosto che nel thread principale 1.

Un nuovo profiler arriva in Python 3.15

Python 3.15 è dotato di un profiler per campionamento integrato nel modulo profiling.sampling, eliminando la necessità di strumenti di terze parti solo per vedere dove un programma sta passando il suo tempo. Simon Willison lo ha messo all'opera su web-edit, la sua applicazione open-source Python di editing web, e i risultati hanno dipinto un quadro sorprendente delle abitudini CPU dell'app.

Grafici a fiamma e mappe termiche resi facili

Per creare le visualizzazioni effettive, Willison ha affidato il compito a GPT-6 Astra Extra High in esecuzione all'interno dell'assistente di codifica Codex. La richiesta era semplice: generare un grafico a fiamma e una mappa termica a livello del codice sorgente per l'app web-edit sotto un carico di lavoro realistico di editing. I diagrammi risultanti mostrano bande spesse di attività CPU concentrate in una singola funzione, e un overlay colorato sul codice sorgente che indica esattamente quali righe sono le più calde.

Line endings miste sono il massimo freno

Il profiler ha registrato 15.296 stack CPU durante una sessione di editing intensa. Di gran lunga il hotspot dominante era preserve_endings, una routine responsabile di mantenere intatto lo stile originale dei terminali di riga (Unix LF, Windows CRLF, o vecchio Mac CR) quando i file vengono salvati 1. Quella funzione da sola è apparsa nel 64,8 percento di tutti gli stack campionati. All'interno di essa, il lavoro pesante era svolto da SequenceMatcher.find_longest_match, che mangiava il 38,3 percento dei leaf samples — le funzioni finali su ogni percorso di chiamata .

Campionare ogni thread conta

Una delle lezioni pratiche più importanti dall'esercizio è che campionare attraverso tutti i thread è essenziale. Uno sbalorditivo 95,1 percento degli stack registrati proveniva da un thread worker in background gestito da AnyIO, una libreria di concorrenza. Un profilo limitato al thread principale avrebbe quasi completamente perso il vero costo CPU dell'app 1. Il lavoro di Willison sottolinea l'importanza di campionare tutti i thread, poiché il 95,1% degli stack proveniva dal thread worker di AnyIO e sarebbe stato perso da un profilo solo-thread principale.

Perché questo conta per gli sviluppatori Python

Il profiler Python 3.15 è ora parte della libreria standard, il che significa che chiunque esegua una versione recente di Python può ottenere grafici a fiamma e mappe termiche del codice sorgente senza installare pacchetti aggiuntivi. Combinato con assistenti di codifica IA come Codex, la barriera alla creazione di visualizzazioni professionali di prestazioni è caduta drammaticamente — uno sviluppatore può descrivere l'obiettivo in linguaggio semplice e ricevere diagrammi pronti per la produzione. Per chiunque mantenga un'app web Python, il messaggio è semplice: controlla prima il tuo codice di preservazione dei terminali di riga, e assicurati che il tuo profiler stia guardando ogni thread.

Correzioni e aggiornamenti

  • 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.

I fatti principali

  • 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

Fonti

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