The Python Profilers¶

The Stats Class¶

L’analisi dei dati del profiler viene eseguita utilizzando la classeStats.

classepstats.Stats(*nomi di file o profilo, stream=sys.stdout)¶

Questo costruttore di classe crea un’istanza di un “oggetto statistics” da afilename (o elenco di nomi di file) o da un’istanza Profile. Outputwill sarà stampato al flusso specificato da stream.

Il file selezionato dal costruttore di cui sopra deve essere stato creato dalla versione corrispondente di profileo cProfile. Per essere precisi, non vi è alcuna compatibilità di file garantita con le versioni future di thisprofiler, e non vi è alcuna compatibilità con i file prodotti da otherprofilers, o lo stesso profiler eseguito su un sistema operativo diverso. Se vengono forniti diversi file, tutte le statistiche per le funzioni identiche saranno coalizzate, in modo che una visione complessiva di diversi processi possa essere considerata in un unico report. Se è necessario combinare file aggiuntivi con i dati in un oggetto Stats, è possibile utilizzare il metodoadd().

Invece di leggere i dati del profilo da un file, un oggetto cProfile.Profileo profile.Profile può essere utilizzato come origine dati del profilo.

Statsgli oggetti hanno i seguenti metodi:

strip_dirs()¶

Questo metodo per la classe Stats rimuove tutte le informazioni di percorso iniziali dai nomi dei file. È molto utile nel ridurre la dimensione della stampa per adattarsi all’interno (vicino a) 80 colonne. Questo metodo modifical’oggetto e le informazioni spogliate vengono perse. Dopo aver eseguito l’operazione astrip, l’oggetto è considerato avere le sue voci in un ordine “casuale”, come lo era subito dopo l’inizializzazione e il caricamento dell’oggetto.Sestrip_dirs() fa sì che due nomi di funzioni siano distinguibili (si trovano sulla stessa riga dello stesso nome di file e hanno lo stesso nome di funzione), le statistiche per queste due voci vengono accumulate in una singola voce.

add(*filenames)¶

Questo metodo della classeStats accumula ulteriori informazioni di profiling nell’oggetto di profiling corrente. I suoi argomenti dovrebbero fare riferimento ai nomi di file creati dalla versione corrispondente di profile.run()ocProfile.run(). Le statistiche per le funzioni con nome identico (re: file, linea, nome)vengono automaticamente accumulate in singole funzionistatistiche.

dump_stats(filename)¶

Salvare i dati caricati nell’oggetto Stats in un file namedfilename. Il file viene creato se non esiste ed è sovrascrittose esiste già. Questo è equivalente al metodo con lo stesso nomesulle classi profile.Profile e cProfile.Profile.

sort_stats(*keys)¶

Questo metodo modifica l’oggetto Stats ordinandolo in base ai criteri forniti. L’argomento può essere una stringa o un SortKeyenum identificare la base di un ordinamento (esempio: 'time''name'SortKey.TIME o SortKey.NAME). L’argomento SortKey enums haveadvantage sull’argomento string in quanto è più robusto e meno soggetto a errori.

Quando viene fornita più di una chiave, vengono utilizzate chiavi aggiuntive come criteri secondari quando c’è uguaglianza in tutte le chiavi selezionate prima di esse. Ad esempio,sort_stats(SortKey.NAME, SortKey.FILE) ordinerà tutte le voci in base al loro nome di funzione e risolverà tutti i legami(nomi di funzioni identici) ordinando per nome di file.

Per l’argomento stringa, le abbreviazioni possono essere utilizzate per qualsiasi nome chiave, purché l’abbreviazione non sia ambigua.

The following are the valid string and SortKey:

Valid String Arg

Valid enum Arg

Meaning

'calls'

SortKey.CALLS

call count

'cumulative'

SortKey.CUMULATIVE

cumulative time

'cumtime'

N/A

cumulative time

'file'

N/A

file name

'filename'

SortKey.FILENAME

file name

'module'

N/A

file name

'ncalls'

N/A

call count

'pcalls'

SortKey.PCALLS

primitive call count

'line'

SortKey.LINE

line number

'name'

SortKey.NAME

function name

'nfl'

SortKey.NFL

name/file/line

'stdname'

SortKey.STDNAME

standard name

'time'

SortKey.TEMPO

interno

'tottime'

N/A

interno

si noti che tutti i tipi di statistiche sono in ordine decrescente (mettendo mosttime consumo per primo), dove, come nome del file e il numero di riga searchesare in ordine crescente (in ordine alfabetico). La sottile distinzione traSortKey.NFL eSortKey.STDNAME è che il nome standard è asort del nome come stampato, il che significa che i numeri di riga incorporati vengono confrontati in modo strano. Ad esempio, le righe 3, 20 e 40 (ifthe file names were the same) appaiono nell’ordine delle stringhe 20, 3 e 40.In contrasto, SortKey.NFL fa un confronto numerico della linea numbers.In infatti, sort_stats(SortKey.NFL)è lo stesso disort_stats(SortKey.NAME, SortKey.FILENAME, SortKey.LINE).

Per ragioni di retrocompatibilità, sono consentiti gli argomenti numerici -101 e 2. Sono interpretati come'stdname''calls''time' e'cumulative' rispettivamente. Se viene utilizzato questo formato oldstyle (numerico), verrà utilizzata solo una chiave di ordinamento (la chiave numerica) e gli argomenti aggiuntivi verranno ignorati silenziosamente.

Novità nella versione 3.7: Aggiunta l’enum SortKey.

reverse_order()¶

Questo metodo per la classeStats inverte l’ordine dell’elenco di base all’interno dell’oggetto. Si noti che per impostazione predefinita l’ordine crescente vsdescending viene selezionato correttamente in base alla chiave di ordinamento scelta.

print_stats(*restrizioni)¶

Questo metodo per la classe Statsstampa un report come descritto nella definizione profile.run().

L’ordine di stampa si basa sull’ultima operazionesort_stats() eseguita sull’oggetto (soggetto a cui si accede in add() estrip_dirs()).

Gli argomenti forniti (se presenti) possono essere utilizzati per limitare l’elenco alle voci significative. Inizialmente, l’elenco è considerato il set completodi funzioni profilate. Ogni restrizione è un numero intero (per selezionare un numero di righe) o una frazione decimale compresa tra 0,0 e 1.0 incluso (per selezionare una percentuale di linee) o una stringa che verrà interpretata come un’espressione regolare (per il modello corrisponde al nome standard che viene stampato).Se vengono fornite diverse restrizioni, vengono applicate in sequenza.Ad esempio:

print_stats(.1, 'foo:')

limiterebbe prima la stampa al primo 10% dell’elenco, quindi solo le funzioni di stampa che facevano parte del nome file.*foo:. Al contrario, il comando:

print_stats('foo:', .1)

limiterebbe l’elenco a tutte le funzioni con nomi di file .*foo:, quindi procederebbe a stampare solo il primo 10% di esse.

print_callers(*restrizioni)¶

Questo metodo per la classe Stats stampa un elenco di tutte le funzioniche hanno chiamato ciascuna funzione nel database profilato. L’ordinamento è identico a quello fornito da print_stats() e anche la definizione dell’argomento di restrizione è identica. Ogni chiamante isreported sulla propria linea. Il formato differisce leggermente a seconda delprofiler che ha prodotto le statistiche:

  • Con profile, un numero viene mostrato tra parentesi dopo ogni chiamata per mostrare quante volte è stata effettuata questa chiamata specifica. Per comodità, un secondo numero non tra parentesi ripete il tempo cumulativo trascorso nella funzione a destra.

  • Con cProfile, ogni chiamante è preceduto da tre numeri: il numero di volte in cui è stata effettuata questa chiamata specifica e i tempi totali e cumulativi trascorsi nella funzione corrente mentre è stata invocata da questo specifico chiamante.

print_callees(*restrizioni)¶

Questo metodo per la classe Stats stampa un elenco di tutte le funzioniche sono state chiamate dalla funzione indicata. A parte questa inversione di direzione delle chiamate (re: chiamato vs è stato chiamato da), gli argomenti andordering sono identici al print_callers() metodo.

get_stats_profile()¶

Questo metodo restituisce un’istanza di StatsProfile, che contiene una mappatura dei nomi delle funzioni alle istanze di FunctionProfile. Ogni FunctionProfileinstance contiene informazioni relative al profilo della funzione come il tempo impiegato per l’esecuzione della funzione, quante volte è stata chiamata, ecc

Novità nella versione 3.9: Aggiunte le seguenti classi di dati: StatsProfile, FunctionProfile.Aggiunta la seguente funzione: get_stats_profile.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.