de Python Profilers¶

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

'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.TIJD

tijd

'tottime'

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 -101, 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.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.