the Python Profilers¶

the Stats Class¶

Analysis of the profiler data is divered using the Stats class.

classpstats.Stats(*filenames or profile, stream=sys.stdout)¶

tämä luokan konstruktori luo ”tilastoobjektin” instanssin afilenimestä (tai tiedostonimien luettelosta) tai Profile instanssi. Output tulostetaan stream määritelty stream.

yllä olevan rakentajan valitseman tiedoston on täytynyt olla luotu profile tai cProfile. Ollakseni tarkka, ei ole Tiedostojen yhteensopivuutta taattu tulevien versioiden thisprofiler, ja ei ole yhteensopivuutta tiedostojen tuottamia otherprofilers, tai sama profiler ajaa eri käyttöjärjestelmässä. Jos useita tiedostoja toimitetaan, kaikki identtisiä toimintoja koskevat tilastot kootaan yhteen, niin että kokonaisnäkemystä useista prosesseista voidaan tarkastella yhdessä kertomuksessa. Jos lisätiedostoja on yhdistettävä olemassa olevan Stats objektin tietoihin, voidaan käyttää add() menetelmää.

profiilitietojen lukemisen sijaan profiilitietolähteenä voidaan käyttää cProfile.Profiletai profile.Profile objektia.

Stats olioilla on seuraavat menetelmät:

strip_dirs()¶

tämä Stats Luokka poistaa kaikki johtavat polkutiedot tiedostonimistä. Se on erittäin hyödyllinen pienennettäessä tulosteen kokoa niin, että se mahtuu (lähelle) 80 sarakkeeseen. Tämä menetelmä muokkaa objektia, ja riisuttu tieto katoaa. Astrip-operaation suorittamisen jälkeen objektilla katsotaan olevan merkintänsä ”satunnaisessa” järjestyksessä, koska se tapahtui juuri objektin alustuksen ja lataamisen jälkeen.Jos strip_dirs() aiheuttaa kahden funktion nimien erottamisen toisistaan (ne ovat samalla rivillä samaa tiedostonimeä ja niillä on sama funktion nimi), näiden kahden entrin tilastot kootaan yhdeksi tietueeksi.

add(*tiedostonimet)¶

tämä Stats Luokka kerää lisää profilointitietoa nykyiseen profilointikohteeseen. Sen argumenttien tulisi viitata tiedostonimiin, jotka on luotu vastaavalla versiolla profile.run()tai cProfile.run(). Identtisesti nimettyjen (re: tiedosto, rivi,nimi) funktioiden tilastot kasautuvat automaattisesti yksittäisiksi funktiostatistikoiksi.

dump_stats(tiedostonimi)¶

Tallenna Stats objekti tiedostolle nimeltä filename. Tiedosto luodaan, jos sitä ei ole olemassa, ja se ylikirjoitetaan, jos se on jo olemassa. Tämä vastaa saman nimen menetelmää profile.Profile ja cProfile.Profile luokissa.

sort_stats(*keys)¶

tämä menetelmä muuttaa Stats objektia lajittelemalla sen annettujen kriteerien mukaan. Argumentti voi olla joko merkkijono tai SortKeyenum, joka tunnistaa järjestyksen perustan (esimerkiksi: 'time''name'SortKey.TIME tai SortKey.NAME). SortKey enums argumentti onetu string argumentti, että se on vahvempi ja vähemmän virhe altis.

kun useampi kuin yksi avain on annettu, käytetään lisäavaimia toissijaisten kriteerien mukaan, kun kaikissa ennen niitä valituissa avaimissa on yhtäläisyys. Esimerkiksi sort_stats(SortKey.NAME, SortKey.FILE) sortall tietueet niiden funktion nimen mukaan ja ratkaisee kaikki sidokset(identtiset funktionimet) lajittelemalla tiedostonimen mukaan.

merkkijonoargumentissa voidaan käyttää lyhenteitä mistä tahansa avainnimestä, kunhan lyhenne on yksiselitteinen.

The following are the valid string and SortKey:

sisäinen aika

N/A

sisäinen aika

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

'tottime'

huomaa, että kaikki tilastotyypit ovat alenevassa järjestyksessä (sijoittaen eniten aikaa vievät kohteet ensimmäiseksi), jossa nimenä, tiedostona ja rivinumerona olevat haut ovat nousevassa järjestyksessä (aakkosjärjestyksessä). Hienovarainen eroSortKey.NFL ja SortKey.STDNAME on se, että vakionimi on nimen asort painettuna, mikä tarkoittaa, että upotettuja rivinumeroita verrataan parittomalla tavalla. Esimerkiksi rivit 3, 20 ja 40 näkyisivät (jos tiedostonimet olisivat samat) merkkijonojärjestyksessä 20, 3 ja 40.In kontrasti, SortKey.NFL tekee numeerisen vertailun riville numbers.In itse asiassa sort_stats(SortKey.NFL) on sama kuinsort_stats(SortKey.NAME, SortKey.FILENAME, SortKey.LINE).

taaksepäin yhteensopivuussyistä numeeriset argumentit -101 ja 2 ovat sallittuja. Ne tulkitaan seuraavasti: 'stdname''calls''time' ja 'cumulative'. Jos käytetään tätä oldstyle-muotoa (numeerinen), käytetään vain yhtä lajitteluavainta (numeerinen avain), ja lisäargumentit jätetään hiljaisesti huomiotta.

uusi versio 3.7: lisätty SortKey-enum.

reverse_order()¶

tämä Stats Luokka kääntää perusluettelon järjestyksen objektin sisällä. Huomaa, että oletusarvoisesti nouseva vsdescending järjestys on oikein valittu valinnan lajitteluavaimen perusteella.

print_stats(*rajoitukset)¶

tämä Stats Luokka tulostaa profile.run() määritelmän mukaisen raportin.

tulostusjärjestys perustuu viimeiseensort_stats() objektille tehtyyn operaatioon (subject tocaveats in add() jastrip_dirs()).

annettuja perusteluja (jos sellaisia on) voidaan käyttää luettelon rajoittamiseen merkittäviin merkintöihin. Aluksi luettelo otetaan koko joukko profiloituja toimintoja. Jokainen rajoitus on joko kokonaisluku (valitaan rivien määrä), tai desimaaliosuus välillä 0,0 ja 1.0 inclusive (valitse prosenttiosuus rivejä), tai merkkijono, joka tulkitaan aregular lauseke (kuvio vastaa standardin nimi, joka on painettu).Jos rajoituksia on useita, niitä sovelletaan peräkkäin.Esimerkiksi:

print_stats(.1, 'foo:')

rajoittaisi tulostuksen ensin 10%: iin listasta, ja sen jälkeen vain tiedostonimeen kuuluviin printfunktioihin.*foo:. Sen sijaan komitea:

print_stats('foo:', .1)

rajoittaisi luettelon koskemaan kaikkia funktioita,joiden tiedostonimet ovat .*foo:, ja jatkaisi sitten vain ensimmäisten 10% tulostamista.

print_callers(*rajoitukset)¶

tämä menetelmä Stats Luokka tulostaa luettelon kaikista profiloidun tietokannan jokaista funktiota kutsuvista funktioista. Järjestys on sama kuin print_stats(), ja myös rajoittavan argumentin määritelmä on sama. Jokainen soittaja ilmoittautuu omalla linjallaan. Muoto vaihtelee hieman riippuen tilastot tuottaneesta kääntäjästä:

  • kanssa profile, numero näkyy suluissa jokaisen puhelun jälkeen, joka näyttää kuinka monta kertaa kyseinen puhelu on tehty. Mukavuuden, asecond ei-suluissa numero toistaa kumulatiivinen vietetty aika toiminto oikealla.

  • cProfilejokaista soittajaa edeltää kolme numeroa: kuinka monta kertaa kyseinen puhelu on soitettu, ja kuinka monta ja kumulatiivista aikaa kulloisessatoiminnossa on käytetty, kun kyseinen soittaja on vedonnut siihen.

print_callees(*rajoitukset)¶

tämä menetelmä Stats Luokka tulostaa luettelon kaikista funktioista, joita ilmoitettu funktio kutsui. Lukuun ottamatta tätä käänteispuhelujen kääntämistä (re: called vs was called by), argumentit andorring ovat identtiset print_callers() – menetelmän kanssa.

get_stats_profile()¶

tämä menetelmä palauttaa statsprofile-instanssin, joka sisältää funktioiden nimien kartoituksen Funktioprofile-instansseille. Jokainen Funktiofileinstance sisältää funktion profiiliin liittyviä tietoja, kuten kuinka kauan funktio kesti suorittaa, kuinka monta kertaa sitä kutsuttiin jne…

uusi versio 3.9: lisätty seuraavat dataklassikot: StatsProfile, FunctionProfile.Lisätty seuraava toiminto: get_stats_profile.

Vastaa

Sähköpostiosoitettasi ei julkaista.