de stats-Klasse¶
analyse van de profilergegevens wordt gedaan met behulp van de Stats
klasse.
classpstats.
Stats
(*bestandsnamen of profiel, stream = sys.stdout)¶
deze klasse constructor maakt een instantie aan van een” statistics object”uit afilename (of lijst met bestandsnamen) of uit een Profile
instantie. Outputzal worden afgedrukt naar de stream die is opgegeven door stream.
het bestand dat door de bovenstaande constructor is geselecteerd, moet zijn aangemaakt door de corresponderende versie van profile
of cProfile
. Om specifiek te zijn, er is geen bestand Compatibiliteit gegarandeerd met toekomstige versies van thisprofiler, en er is geen compatibiliteit met bestanden geproduceerd door otherprofilers, of dezelfde profiler draaien op een ander besturingssysteem. Indien verschillende bestanden worden verstrekt, zullen alle statistieken voor identieke functies worden samengevoegd, zodat een algemeen overzicht van verscheidene processen in één rapport kan worden overwogen. Als extra bestanden moeten worden gecombineerd met gegevens in een bestaand Stats
object, kan de methode add()
worden gebruikt.
in plaats van de profielgegevens uit een bestand te lezen, kan een cProfile.Profile
of profile.Profile
object als profielgegevensbron worden gebruikt.
Stats
objecten hebben de volgende methoden:
strip_dirs
()¶
Deze methode voor de Stats
klasse verwijdert alle belangrijke padinformatie van bestandsnamen. Het is zeer nuttig bij het verkleinen van de grootte van de afdruk te passen binnen (dicht bij) 80 kolommen. Deze methode wijzigt het object en de gestripte informatie gaat verloren. Na het uitvoeren van astrip operatie, het object wordt beschouwd als zijn items in een “willekeurige” volgorde, zoals het was net na object initialisatie en laden.Als strip_dirs()
ervoor zorgt dat twee functienamen niet van elkaar te onderscheiden zijn (ze staan op dezelfde regel van dezelfde bestandsnaam en hebben dezelfde functienaam), dan worden de statistieken voor deze twee entries verzameld in een enkele entry.
add
(*bestandsnamen)¶
Deze methode van de Stats
klasse verzamelt aanvullende profileringsinformatie in het huidige profileringsobject. De argumenten moeten verwijzen naar bestandsnamen die zijn aangemaakt door de overeenkomstige versie van profile.run()
of cProfile.run()
. Statistieken voor identically named (re: file, line,name) functies worden automatisch verzameld in enkele functionstatistics.
dump_stats
(bestandsnaam)¶
sla de gegevens op die zijn geladen in het Stats
object naar een bestandsnaam. Het bestand wordt aangemaakt als het niet bestaat, en wordt overschreven als het al bestaat. Dit is gelijk aan de methode van dezelfde naamop deprofile.Profile
encProfile.Profile
klassen.
sort_stats
(*keys)¶
Deze methode wijzigt het Stats
object door het te sorteren volgens de opgegeven criteria. Het argument kan een tekenreeks of een SortKeyenum zijn die de basis van een soort identificeert (voorbeeld: 'time'
'name'
SortKey.TIME
of SortKey.NAME
). Het sortkey enums argument heeft voordeel over het string argument in dat het robuuster en minder foutgevoelig is.
wanneer er meer dan één sleutel is opgegeven, worden extra sleutels gebruikt als secundaire criteria wanneer er gelijkheid is in alle sleutels die vóór hen zijn geselecteerd. Bijvoorbeeld, sort_stats(SortKey.NAME, SortKey.FILE)
zal alle items sorteren op hun functienaam, en alle verbindingen(identieke functienamen) oplossen door te sorteren op bestandsnaam.
voor het tekenreeksargument kunnen afkortingen worden gebruikt voor alle sleutelnamen, zolang de afkorting eenduidig is.
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.TIJD |
tijd |
|
nvt |
tijd |
Let op dat alle soorten op statistieken worden in aflopende volgorde (het plaatsen van mosttime consumeren eerste items), waar de naam van het bestand, en regel nummer searchesare in oplopende volgorde (alfabetisch). Het subtiele onderscheid tussenSortKey.NFL
en SortKey.STDNAME
is dat de standaardnaam een soort van de naam is zoals afgedrukt, wat betekent dat de ingebedde regelnummers op een oneven manier worden vergeleken. Bijvoorbeeld, regels 3, 20, en 40 zouden (als de bestandsnamen hetzelfde waren) verschijnen in de string volgorde 20, 3 en 40.In contrast, SortKey.NFL
geeft een numerieke vergelijking van de regel numbers.In feit, sort_stats(SortKey.NFL)
is hetzelfde alssort_stats(SortKey.NAME, SortKey.FILENAME, SortKey.LINE)
.
om redenen van achterwaartse compatibiliteit zijn de numerieke argumenten -1
0
1
, en 2
toegestaan. Ze worden geïnterpreteerd als 'stdname'
'calls'
'time'
, en 'cumulative'
. Als dit oldstyle-formaat (numeriek) wordt gebruikt, zal slechts één sorteersleutel (de numerieke sleutel) worden gebruikt en zullen aanvullende argumenten stilletjes worden genegeerd.
nieuw in versie 3.7: het sortkey-enum toegevoegd.
reverse_order
()¶
Deze methode voor de Stats
klasse keert de volgorde van de basislijst binnen het object om. Merk op dat standaard oplopende vsdescending volgorde correct is geselecteerd op basis van de sorteersleutel van keuze.
print_stats
(*restrictions)¶
Deze methode voor de Stats
geeft een rapport af zoals beschreven in de profile.run()
definitie.
De volgorde van afdrukken is gebaseerd op de laatstesort_stats()
bewerking uitgevoerd op het object (onderwerp tocaveats in add()
enstrip_dirs()
).
de gegeven argumenten (indien aanwezig) kunnen worden gebruikt om de lijst te beperken tot de belangrijke items. In eerste instantie wordt de lijst beschouwd als de volledige set van geprofileerde functies. Elke beperking is ofwel een geheel getal (om een aantal regels te selecteren), of een decimale breuk tussen 0.0 en 1.0 inclusief (om een percentage regels te selecteren), of een tekenreeks die zal worden geïnterpreteerd als eenguliere expressie (om het patroon overeen te komen met de standaardnaam die wordt afgedrukt).Als er meerdere beperkingen zijn, worden deze achtereenvolgens toegepast.Bijvoorbeeld:
print_stats(.1, 'foo:')
zou eerst het afdrukken beperken tot de eerste 10% van de lijst, en dan alleen printfuncties die deel uitmaakten van bestandsnaam .*foo:
. De opdracht daarentegen:
print_stats('foo:', .1)
zou de lijst beperken tot alle functies met bestandsnamen .*foo:
, en vervolgens doorgaan met het afdrukken van alleen de eerste 10%.
print_callers
(*restrictions)¶
Deze methode voor de Stats
geeft een lijst af van alle functies die elke functie aanroepen in de geprofileerde database. De volgorde is identiek aan die van print_stats()
, en de definitie van het beperkingsargument is ook identiek. Elke beller wordt op zijn eigen lijn gemeld. Het formaat verschilt enigszins afhankelijk van de profiler die de statistieken produceerde:
-
met
profile
, een getal wordt tussen haakjes getoond na elke aanroep om te laten zien hoe vaak deze specifieke aanroep werd gedaan. Voor het gemak herhaalt een tweede niet-haakjes getal de cumulatieve tijd die in de functie rechts wordt doorgebracht. -
met
cProfile
wordt elke beller voorafgegaan door drie nummers: het aantal keren dat deze specifieke oproep werd gedaan, en de totale en cumulatieve tijden die in de huidige functie werden doorgebracht terwijl deze specifieke beller werd aangeroepen.
print_callees
(*restricties)¶
Deze methode voor de Stats
geeft een lijst af van alle functies die door de aangegeven functie zijn aangeroepen. Afgezien van deze omkering van de richting van aanroepen (re: called vs werd aangeroepen door), zijn de argumenten andordering identiek aan de print_callers()
methode.
get_stats_profile
()¶
Deze methode geeft een instantie van StatsProfile terug, die een toewijzing van functienamen aan instanties van FunctionProfile bevat. Elke FunctionProfileinstance bevat informatie met betrekking tot het profiel van de functie, zoals hoe lang de functie duurde om te draaien, hoe vaak het werd aangeroepen, etc…
nieuw in versie 3.9: de volgende dataclasses toegevoegd: StatsProfile, FunctionProfile.De volgende functie toegevoegd: get_stats_profile.