clasa Stats
analiza datelor profiler se face folosind Stats
clasa.
clasapstats.
Stats
(*nume de fișiere sau profil, stream=sys.acest constructor de clase creează o instanță a unui „obiect statistic” din afilename (sau listă de nume de fișiere) sau dintr-o instanțăProfile
. Outputva fi tipărit în fluxul specificat de stream.
fișierul selectat de constructorul de mai sus trebuie să fi fost creat de versiunea corespunzătoare aprofile
saucProfile
. Pentru a fi specific, nu există nici o compatibilitate fișier garantat cu versiunile viitoare ale thisprofiler, și nu există nici o compatibilitate cu fișiere produse de otherprofilers, sau același Profiler rula pe un sistem de operare diferit. Dacă sunt furnizate mai multe fișiere, Toate Statisticile pentru funcții identice vor fi combinate, astfel încât să poată fi luată în considerare o imagine de ansamblu a mai multor procese într-un singur raport. Dacă fișierele suplimentare trebuie combinate cu date într-un obiect existent Stats
, se poate utiliza metoda add()
.
în loc de a citi datele de profil dintr-un fișier, un obiectcProfile.Profile
sauprofile.Profile
poate fi folosit ca sursă de date de profil.
Stats
obiectele au următoarele metode:
strip_dirs
(). Este foarte util în reducerea mărimiiimprimarea pentru a se încadra în (aproape de) 80 de coloane. Această metodă se modificăobiectul și informațiile dezbrăcate sunt pierdute. După efectuarea operației astrip, obiectul este considerat a avea intrările sale într-o ordine” aleatorie”, așa cum a fost imediat după inițializarea și încărcarea obiectului.Dacăstrip_dirs()
face ca două nume de funcții să fie distincte (sunt pe aceeași linie a aceluiași nume de fișier și au același nume de funcție), atunci statisticile pentru aceste două intrări sunt acumulate într-o singură intrare.add
(*filenames)
această metodă a claseiStats
acumulează informații suplimentare de profilare în obiectul curent de profilare. Argumentele sale ar trebui să se referăla numele de fișiere create de versiunea corespunzătoare a profile.run()
sau cProfile.run()
. Statisticile pentru funcțiile numite identic (re: fișier, linie,nume) sunt acumulate automat în funcții unice.
dump_stats
(nume de fișier)
salvați datele încărcate înStats
obiect la un fișier namedfilename. Fișierul este creat dacă nu există și este suprascrisdacă există deja. Aceasta este echivalentă cu metoda cu același numepe clasele profile.Profile
și cProfile.Profile
.
sort_stats
(*keys)
această metodă modifică obiectulStats
sortându-l în funcție de criteriile furnizate. Argumentul poate fi fie un șir, fie un SortKeyenum care identifică baza unui fel (exemplu: 'time'
'name'
SortKey.TIME
sau SortKey.NAME
). Argumentul sortkey enums haveavantage peste argumentul șir în care este mai robust și lesserror predispuse.
când sunt furnizate mai multe chei, atunci se folosesc chei suplimentare ca criterii secundare atunci când există egalitate în toate tastele selectate înaintea lor. De exemplu,sort_stats(SortKey.NAME, SortKey.FILE)
va sorta toate intrările în funcție de numele funcției lor și va rezolva toate legăturile(nume de funcții identice) sortând după numele fișierului.
pentru argumentul string, abrevierile pot fi folosite pentru orice nume de chei, atâta timp cât abrevierea este lipsită de ambiguitate.
The following are the valid string and SortKey:
Valid String Arg |
Valid enum Arg |
Meaning |
---|---|---|
|
SortKey.CALLS |
call count |
|
SortKey.CUMULATIVE |
cumulative time |
|
N/A |
cumulative time |
|
N/A |
file name |
|
SortKey.FILENAME |
file name |
|
N/A |
file name |
|
N/A |
call count |
|
SortKey.PCALLS |
primitive call count |
|
SortKey.LINE |
line number |
|
SortKey.NAME |
function name |
|
SortKey.NFL |
name/file/line |
|
SortKey.STDNAME |
standard name |
|
SortKey.Timp |
timp intern |
|
N/A |
timp intern |
rețineți că tot felul de statistici sunt în ordine descrescătoare (plasând mai întâi elementele consumatoare de timp), unde, ca Nume, fișier și număr de linie căutărisunt în ordine crescătoare (alfabetică). Distincția subtilă dintre SortKey.NFL
și SortKey.STDNAME
este că numele standard este asort al numelui așa cum este tipărit, ceea ce înseamnă că numerele de linie încorporate sunt comparate într-un mod ciudat. De exemplu, liniile 3, 20 și 40 ar apărea (dacă numele fișierelor ar fi aceleași) în ordinea șirului 20, 3 și 40.In contrast, SortKey.NFL
face o comparație numerică a liniei numbers.In fapt, sort_stats(SortKey.NFL)
este la fel casort_stats(SortKey.NAME, SortKey.FILENAME, SortKey.LINE)
.
Din motive de compatibilitate inversă, argumentele numerice-1
0
1
și2
sunt permise. Acestea sunt interpretate ca'stdname'
'calls'
'time'
și'cumulative'
respectiv. Dacă se folosește acest format oldstyle (numeric), se va folosi o singură tastă de sortare (tasta numerică), iar argumentele suplimentare vor fi ignorate în tăcere.
nou în versiunea 3.7: adăugat sortkey enum.
reverse_order
() XV
această metodă pentruStats
clasa inversează ordonarea listei de bază în cadrul obiectului. Rețineți că, în mod implicit ordine ascendentă vsdescending este selectat în mod corespunzător pe baza tastei de sortare de alegere.
print_stats
(*restricții)
această metodă pentruStats
clasa imprimă un raport așa cum este descrisînprofile.run()
definiție.
ordinea tipăririi se bazează pe ultima operațiesort_stats()
efectuată pe obiect (sub rezerva modificărilor înadd()
șistrip_dirs()
).
argumentele furnizate (dacă există) pot fi utilizate pentru a limita lista la intrări semnificative. Inițial, lista este considerată a fi setul completde funcții profilate. Fiecare restricție este fie un număr întreg (pentru a selecta un număr de linii), fie o fracție zecimală între 0,0 și 1.0 inclusiv (pentru a selecta un procent de linii) sau un șir care va fi interpretat ca expresie regulată (pentru a se potrivi modelului cu numele standard tipărit).Dacă sunt furnizate mai multe restricții, atunci acestea sunt aplicate secvențial.De exemplu:
print_stats(.1, 'foo:')
ar limita mai întâi imprimarea la primele 10% din listă și apoi numai printfunctions care au făcut parte din numele fișierului.*foo:
. În schimb, comanda:
print_stats('foo:', .1)
ar limita lista la toate funcțiile care au nume de fișiere.*foo:
, și apoi continuați să imprimați doar primele 10% dintre ele.
print_callers
(*restrictions)
această metodă pentruStats
clasa imprimă o listă cu toate funcțiilecare a numit fiecare funcție în baza de date profilate. Ordonarea este identică cu cea furnizată de print_stats()
, iar definiția argumentului de restricționare este, de asemenea, identică. Fiecare apelant esteraportat pe propria linie. Formatul diferă ușor în funcție deprofiler care a produs Statisticile:
-
cu
profile
, un număr este afișat între paranteze după fiecare apelpentru a arăta de câte ori a fost efectuat acest apel specific. Pentru comoditate, un al doilea număr ne-parantezat repetă timpul cumulat petrecut înfuncția din dreapta. -
cu
cProfile
, fiecare apelant este precedat de trei numere: de câte ori a fost efectuat acest apel specific și de timpul total și cumulativ petrecut în funcția curentă în timp ce a fost invocat de acest apelant specific.
print_callees
(*restricții)
această metodă pentruStats
clasa imprimă o listă a tuturor funcțiilor care au fost apelate de funcția indicată. În afară de această inversare a direcționării apelurilor (re: called vs was called by), argumentele anderdering sunt identice cu metoda print_callers()
.
get_stats_profile
()
această metodă returnează o instanță de StatsProfile, care conține un mappingof nume de funcții la instanțe de FunctionProfile. Fiecare FunctionProfileinstance deține informații legate de profilul funcției, cum ar fi howlong funcția a luat pentru a rula, de câte ori a fost numit, etc…
nou în versiunea 3.9: adăugat următoarele dataclasses: StatsProfile, FunctionProfile.Adăugat următoarea funcție: get_stats_profile.