statistikkklassen¶
Analyse av profildataene gjøres ved hjelp av Stats
klassen.
klassepstats.
Stats
(*filnavn eller profil, stream = sys.denne klassekonstruktøren oppretter en forekomst av et «statistikkobjekt»fra afilnavn (eller liste over filnavn) eller fra enProfile
– forekomst. Outputvil bli skrevet ut til strømmen spesifisert av stream.
filen valgt av konstruktøren ovenfor må ha blitt opprettet av den tilsvarende versjonen av profile
ellercProfile
. For å være spesifikk, er det ingen filkompatibilitet garantert med fremtidige versjoner av thisprofiler, og det er ingen kompatibilitet med filer produsert av otherprofilers, eller samme profiler kjører på et annet operativsystem. Hvis det finnes flere filer, samles all statistikk for identiske funksjoner, slik at en samlet oversikt over flere prosesser kan vurderesi en enkelt rapport. Hvis flere filer må kombineres med data i anexistingStats
objekt,add()
metodenkan brukes.
I Stedet for å lese profildataene fra en fil, kan et cProfile.Profile
eller profile.Profile
– objekt brukes som profildatakilde.
Stats
objekter har følgende metoder:
strip_dirs
()¶
denne metoden forStats
klassen fjerner all ledende baneinformasjon fra filnavn. Det er veldig nyttig for å redusere størrelsen påutskriften for å passe inn i (nær) 80 kolonner. Denne metoden endrer segobjektet, og den strippede informasjonen går tapt. Etter å ha utført astrip-operasjon, anses objektet å ha sine oppføringer i en «tilfeldig» rekkefølge, som det var like etter objektinitialisering og lasting.Hvis strip_dirs()
forårsaker at to funksjonsnavn skal skille seg ut (de er på samme linje med samme filnavn, oghar samme funksjonsnavn), så statistikken for disse to entryeneer akkumulert i en enkelt oppføring.
add
(*filnavn)¶
denne metoden iStats
klassen akkumulerer ekstra profilinformasjon i det gjeldende profileringsobjektet. Dens argumenter bør referere til filnavn opprettet av den tilsvarende versjonen av profile.run()
eller cProfile.run()
. Statistikk for identisk navngitte (re: fil, linje,navn) funksjoner blir automatisk akkumulert i enkelt functionstatistics.
dump_stats
(filnavn)¶
Lagre dataene som er lastet inn iStats
objektet til en fil som heter filnavn. Filen er opprettet hvis den ikke eksisterer, og er overskrivethvis den allerede eksisterer. Dette tilsvarer metoden med samme navnpåprofile.Profile
ogcProfile.Profile
klassene.
sort_stats
(*nøkler)¶
denne metoden endrerStats
objektet ved å sortere det i henhold til de angitte kriteriene. Argumentet kan enten være en streng eller Et SortKeyenum som identifiserer grunnlaget for en sort (eksempel: 'time'
'name'
SortKey.TIME
eller SortKey.NAME
). Sortkey enums-argumentet harfordel over strengargumentet ved at det er mer robust og mindre utsatt.
når mer enn en nøkkel er oppgitt, brukes tilleggstaster somsekundære kriterier når det er likestilling i alle nøkler valgt førdem. For eksempelsort_stats(SortKey.NAME, SortKey.FILE)
sorterer alle oppføringene i henhold til funksjonsnavnet, og løser alle bånd (identiske funksjonsnavn) ved å sortere etter filnavn.
for strengargumentet kan forkortelser brukes til alle nøkkelnavn, somlenge som forkortelsen er entydig.
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.TID |
|
|
intern tid |
merk at alle typer statistikk er i synkende rekkefølge (plasserer mesttidskrevende elementer først), der som navn, fil og linjenummer searchesare i stigende rekkefølge (alfabetisk). Den subtile forskjellen mellom SortKey.NFL
og SortKey.STDNAME
er at standardnavnet er asort av navnet som trykt, noe som betyr at de innebygde linjenummerenebli sammenlignet på en merkelig måte. For eksempel vil linjene 3, 20 og 40 (hvis filnavnene var de samme) vises i strengrekkefølgen 20, 3 og 40.In kontrast,SortKey.NFL
gjør en numerisk sammenligning av linjen numbers.In faktum, sort_stats(SortKey.NFL)
er det samme somsort_stats(SortKey.NAME, SortKey.FILENAME, SortKey.LINE)
.
av hensyn til bakoverkompatibilitet er de numeriske argumentene-1
0
1
og2
tillatt. De tolkes som 'stdname'
'calls'
'time'
og'cumulative'
henholdsvis. Hvis dette oldstyle-formatet (numerisk) brukes, brukes bare en sorteringsnøkkel (talltasten), og flere argumenter ignoreres stille.
Nytt i versjon 3.7: Lagt Til SortKey enum.
reverse_order
()¶
denne metoden ForStats
klassen reverserer rekkefølgen av den grunnleggende listen i objektet. Merk at som standard stigende vsdescending rekkefølge er riktig valgt basert på sorteringsnøkkelen av valget.
print_stats
(*begrensninger)¶
denne metoden forStats
klassen skriver ut en rapport som beskrevetiprofile.run()
definisjonen.
rekkefølgen på utskriften er basert på den siste sort_stats()
operasjon gjort på objektet(underlagt kaveats i add()
og strip_dirs()
).
argumentene (hvis noen) kan brukes til å begrense listen ned til de signifikante oppføringene. I utgangspunktet er listen tatt for å være det komplette settetav profilerte funksjoner. Hver begrensning er enten et heltall (for å velge enantall linjer), eller en desimalfraksjon mellom 0,0 og 1.0 inkluderende (tilselg en prosentandel av linjer), eller en streng som skal tolkes som aregular uttrykk (til mønsteret samsvarer med standardnavnet som skrives ut).Hvis flere restriksjoner er gitt, blir de brukt i rekkefølge.For eksempel:
print_stats(.1, 'foo:')
vil først begrense utskrift til første 10% av listen, og deretter bare printfunctions som var en del av filnavnet.*foo:
. I kontrast, kommandoen:
print_stats('foo:', .1)
vil begrense listen til alle funksjoner som har filnavn.*foo:
,og fortsett deretter med å bare skrive ut de første 10% av dem.print_callers
(*begrensninger)¶
denne metoden forStats
klassen skriver ut en liste over alle funksjonersom kalles hver funksjon i den profilerte databasen. Ordren er sidentisk til det som leveres av print_stats()
, og definisjonen av begrensningsargumentet er også identisk. Hver ringer errapportert på egen linje. Formatet varierer litt avhengig avprofiler som produserte statistikken:
-
Med
profile
, et tall vises i parentes etter hvert anrop for å vise hvor mange ganger denne bestemte samtalen ble gjort. For enkelhets skyld gjentar asecond ikke-parentes nummer den kumulative tiden brukt ifunksjonen til høyre. -
Med
cProfile
har hver innringer tre numre foran seg: antall ganger dette bestemte anropet ble foretatt, og de totale og kumulative tidspunktene som ble brukt i den gjeldende funksjonen mens den ble påkalt av denne bestemte innringer.
print_callees
(*begrensninger)¶
denne metoden ForStats
klassen skriver ut en liste over alle funksjonersom ble kalt av den angitte funksjonen. Bortsett fra denne reverseringen av kall (re: kalt vs ble kalt av), er argumentene ogordering identiske medprint_callers()
– metoden.
get_stats_profile
()¶
denne metoden returnerer En forekomst Av StatsProfile, som inneholder en mappingof funksjonsnavn til forekomster Av FunctionProfile. Hver FunctionProfileinstance inneholder informasjon relatert til funksjonens profil som howlong funksjonen tok for å kjøre, hvor mange ganger det ble kalt, etc…
Nytt i versjon 3.9: Lagt til følgende dataclasses: StatsProfile, FunctionProfile.Lagt til følgende funksjon: get_stats_profile.