a python profilers ++

A stats class ++

a profiler adatok elemzése a Stats osztály segítségével történik.

classpstats.Stats(*fájlnevek vagy profil, stream=sys.ez az osztálykonstruktor létrehoz egy “statisztikai objektum” példányát az afilename (vagy a fájlnevek listája) vagy aProfilepéldányból. Kimenet a stream által megadott adatfolyamra lesz nyomtatva.

a fenti konstruktor által kiválasztott fájlt a profile vagy cProfilemegfelelő verziójának kell létrehoznia. Hogy konkrét, nincs fájl kompatibilitás garantált jövőbeli verziói thisprofiler, és nincs kompatibilitás által termelt fájlok otherprofilers, vagy ugyanaz a profiler fut egy másik operációs rendszer. Ha több fájl is rendelkezésre áll, akkor az azonos funkciókra vonatkozó összes statisztika összevonásra kerül, így egy jelentésben több folyamat átfogó nézetét is figyelembe lehet venni. Ha további fájlokat kell kombinálni egy létező Stats objektum adataival, akkor a add() metódus használható.

a profiladatok fájlból történő olvasása helyett egycProfile.Profilevagyprofile.Profile objektum használható profiladatforrásként.

Stats az objektumok a következő módszerekkel rendelkeznek:

strip_dirs() ez a módszer aStatsosztályhoz eltávolítja az összes vezető pathinformációt a fájlnevekből. Nagyon hasznos a méret csökkentésébena nyomtatás 80 oszlopon belül (közel) illeszkedik. Ez a módszer módosítjaés a megfosztott információ elvész. Az astrip művelet végrehajtása után az objektum bejegyzései”véletlenszerű” sorrendben vannak, mint az objektum inicializálása és betöltése után.Hastrip_dirs()két függvénynév megkülönböztethetetlen (ugyanazon fájlnév ugyanazon sorában vannak, ésugyanaz a függvénynév), akkor a két bejegyzés statisztikái egyetlen bejegyzésben halmozódnak fel.add(*fájlnevek)

a Stats osztály ezen módszere további profilinformációkat halmoz fel az aktuális profilalkotási objektumba. Argumentumainak hivatkozni kella profile.run()vagy cProfile.run()megfelelő verziója által létrehozott fájlnevekre. Az azonos nevű (re: fájl, sor,név) függvények statisztikája automatikusan egyetlen függvénystatisztikába halmozódik fel.

dump_stats(fájlnév)

mentse el a Stats objektumba betöltött adatokat egy fájlnévhez. A fájl akkor jön létre, ha nem létezik, és felülírásra kerül, ha már létezik. Ez egyenértékű az azonos nevű módszerrel a profile.Profile és cProfile.Profile osztályokon.

sort_stats(*keys) ++

Ez a módszer módosítja a Stats objektumot a megadott kritériumok szerinti rendezéssel. Az argumentum lehet string vagy SortKeyenum, amely azonosítja a rendezés alapját (példa: 'time''name'SortKey.TIME vagy SortKey.NAME). A SortKey enums argumentum előnye a string argumentummal szemben, mivel robusztusabb és kevésbé hajlamos a hibákra.

ha egynél több kulcs van megadva, akkor további kulcsokat használnakmásodlagos kritériumok, ha az összes korábban kiválasztott kulcsban egyenlőség van. Például a sort_stats(SortKey.NAME, SortKey.FILE) az összes bejegyzést a függvény neve szerint rendezi, majd az összes kapcsolatot(azonos függvényneveket) Fájlnév szerint rendezi.

a string argumentum esetében a rövidítések bármilyen kulcsnevhez használhatókhosszú ideig, amíg a rövidítés egyértelmű.

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.Idő

belső idő

'tottime'

N/A

belső idő

vegye figyelembe, hogy a statisztikák minden fajtája csökkenő sorrendben van (a legtöbb időigényes tételt helyezi el először), ahol névként, fájlként és sorszámként a keresések növekvő sorrendben (betűrendben) vannak. ASortKey.NFL és a SortKey.STDNAME közötti finom különbség az, hogy a standard név a nyomtatott név sorrendje, ami azt jelenti, hogy a beágyazott sorszámokat páratlan módon hasonlítják össze. Például a 3., 20. és 40. sor (ha a fájlnevek azonosak lennének) a 20., 3. és 40.In kontraszt, SortKey.NFL numerikus összehasonlítást végez a sorról numbers.In tény, hogy sort_stats(SortKey.NFL) ugyanaz, mintsort_stats(SortKey.NAME, SortKey.FILENAME, SortKey.LINE).

visszamenőleges kompatibilitási okokból a -101 és 2 numerikus argumentumok megengedettek. Ezeket a következőképpen értelmezik:'stdname''calls''time', illetve'cumulative'. Ha ezt az oldstyle formátumot (numerikus) használja, akkor csak egy rendezési billentyűt (numerikus billentyűt) fog használni, és a további argumentumokat csendben figyelmen kívül hagyja.

új verzió 3.7: hozzá a SortKey enum.

reverse_order() ++

Ez a módszer a Stats osztály esetében megfordítja az objektumon belüli alaplista sorrendjét. Vegye figyelembe, hogy alapértelmezés szerint növekvő vsda csökkenő sorrend megfelelően van kiválasztva a választott rendezési kulcs alapján.

print_stats(*restrictions) ++

Ez a módszer a Stats osztályhoz a profile.run() definícióban leírt jelentést nyomtat ki.

A nyomtatás sorrendje az utolsósort_stats() műveleten alapul, amelyet az objektumon végeztek (a add() ésstrip_dirs()).

a megadott argumentumok (ha vannak) felhasználhatók arra, hogy a listát ajelentős bejegyzésekre korlátozzák. Kezdetben a lista a teljes készletprofilos funkciók. Minden korlátozás vagy egész szám (a vonalak számának kiválasztásához), vagy 0,0 és 1 közötti tizedes tört.0 inclusive (a vonalak százalékának kiválasztása), vagy egy karakterlánc, amely úgy értelmezhető, mint a szabályos kifejezés (hogy a minta megfeleljen a kinyomtatott szabványos névnek).Ha több korlátozás van megadva, akkor azokat egymás után alkalmazzák.Például:

print_stats(.1, 'foo:')

először a lista első 10% – ára korlátozná a nyomtatást, majd csak a fájlnév részét képező nyomtatási funkciókat .*foo:. Ezzel szemben a parancs:

print_stats('foo:', .1)

a listát minden olyan függvényre korlátozná,amelynek fájlneve .*foo:, majd csak az első 10% – ot nyomtassa ki.

print_callers(*restrictions) ++

Ez a módszer a Stats osztály kiírja az összes függvény listáját, amely a profilozott adatbázisban minden függvényt meghívott. A sorrend azonos a print_stats() által megadottal, és a korlátozó argumentum meghatározása is azonos. Minden hívóa saját vonalán jelentették be. A formátum kissé eltér a statisztikákat előállító profilozótól függően:

  • a profile, minden hívás után zárójelben egy szám jelenik meg, hogy megmutassa, hányszor történt ez a konkrét hívás. A kényelem érdekében a második nem zárójeles szám megismétli a jobb oldali funkcióban töltött kumulatív időt.

  • cProfile esetén minden hívót három szám előz meg: ahányszor ezt a konkrét hívást kezdeményezték, valamint az aktuális függvényben töltött összes és összesített idő, amíg azt az adott hívó meghívta.

print_callees(*restrictions) ++

Ez a módszer a Stats osztály kiírja az összes függvény listájátamelyeket a jelzett függvény hívott. A hívások ezen megfordításán kívül (re: called vs was called by) az argumentumok és sorrendek megegyeznek a print_callers() módszerrel.

get_stats_profile() ++

Ez a módszer a StatsProfile egy példányát adja vissza, amely függvénynevek leképezését tartalmazza a FunctionProfile példányaihoz. Minden FunctionProfileinstance a függvény profiljával kapcsolatos információkat tartalmaz, például azt, hogy mennyi ideig tartott a funkció futtatása, hányszor hívták, stb…

új a 3.9-es verzióban: Hozzáadta a következő adatosztályokat: StatsProfile, FunctionProfile.Hozzáadta a következő funkciót: get_stats_profile.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.