The Stats Class¶
Analiza danych profilera odbywa się przy użyciu Stats
class.
classpstats.
Stats
(*nazwy plików lub profil, stream = sys.stdout)¶
ten konstruktor klasy tworzy instancję „obiektu Statystycznego” z nazwy pliku (lub listy nazw plików) lub z instancji Profile
. Wyjście zostanie wydrukowane do strumienia określonego przez stream.
plik wybrany przez powyższy konstruktor musi być utworzony przez odpowiadającą mu wersjęprofile
lubcProfile
. Mówiąc konkretnie, nie ma gwarantowanej kompatybilności plików z przyszłymi wersjami thisprofiler, nie ma kompatybilności z plikami produkowanymi przez otherprofilers lub ten sam profiler działa na innym systemie operacyjnym. Jeśli dostarczono kilka plików, Wszystkie Statystyki dla identycznych funkcji zostaną połączone, tak aby ogólny widok kilku procesów można było rozważyć w jednym raporcie. Jeśli dodatkowe pliki muszą być połączone z danymi w istniejącym obiekcie Stats
, można zastosować metodę add()
.
zamiast odczytywać dane profilu z pliku, jako źródło danych profilu można użyć obiektu cProfile.Profile
lub profile.Profile
.
Stats
obiekty mają następujące metody:
strip_dirs
()¶
ta metoda dla klasyStats
usuwa wszystkie wiodące informacje o ścieżkach z nazw plików. Jest to bardzo przydatne przy zmniejszaniu rozmiaru wydruku, aby zmieścić się w (blisko) 80 kolumnach. Ta metoda modyfikuje obiekt, A pozbawione informacje są tracone. Po wykonaniu operacji astrip, obiekt jest uważany za mający swoje wpisy w „losowej” kolejności, tak jak to było tuż po inicjalizacji i załadowaniu obiektu.Jeśli strip_dirs()
powoduje, że dwie nazwy funkcji są nie do odróżnienia (znajdują się w tym samym wierszu tej samej nazwy pliku i mają tę samą nazwę funkcji), to statystyki dla tych dwóch pozycji są gromadzone w jednym wpisie.
add
(*nazwy plików)¶
ta metoda klasyStats
gromadzi dodatkowe informacje o profilowaniu do bieżącego obiektu profilowania. Jego argumenty powinny odnosić się do nazw plików utworzonych przez odpowiednią wersję profile.run()
lub cProfile.run()
. Statystyki dla identycznie nazwanych funkcji (re: file,line, name) są automatycznie gromadzone w jednej functionstatistics.
dump_stats
(nazwa pliku)¶
Zapisz dane załadowane do obiektuStats
do pliku o nazwie pliku. Plik jest tworzony, jeśli nie istnieje i jest nadpisywany, jeśli już istnieje. Jest to odpowiednik metody o tej samej nazwiew klasachprofile.Profile
IcProfile.Profile
.
sort_stats
(*klucze)¶
ta metoda modyfikuje obiektStats
sortując go według podanych kryteriów. Argument może być łańcuchem znaków lub SortKeyenum identyfikującym podstawę sortowania (przykład: 'time'
'name'
SortKey.TIME
lub SortKey.NAME
). Argument sortkey enums ma przewagę nad argumentem string, ponieważ jest bardziej solidny i mniej podatny na błędy.
gdy podano więcej niż jeden klucz, wówczas stosuje się dodatkowe klucze, gdy we wszystkich wybranych przed nimi kluczach występuje równość. Na przykład sort_stats(SortKey.NAME, SortKey.FILE)
posortuje wszystkie wpisy według ich nazwy funkcji i rozwiąże wszystkie powiązania(identyczne nazwy funkcji) przez sortowanie według nazwy pliku.
dla argumentu string można użyć skrótów dla dowolnych nazw kluczy, gdyż skrót jest jednoznaczny.
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.Czas |
czas wewnętrzny |
|
N/A |
czas wewnętrzny |
należy pamiętać, że wszystkie rodzaje statystyk są w porządku malejącym (umieszczając najczęściej czasochłonne pozycje jako pierwsze), gdzie jako nazwa, plik i numer linii wyszukiwania są w porządku rosnącym (Alfabetycznie). Subtelne rozróżnienie pomiędzy SortKey.NFL
I SortKey.STDNAME
polega na tym, że standardowa nazwa jest mniejsza od nazwy wydrukowanej, co oznacza, że numery wbudowanych linii są porównywane w dziwny sposób. Na przykład linie 3, 20 i 40 (gdyby nazwy plików były takie same) pojawiłyby się w kolejności łańcuchów 20, 3 i 40.In kontrast, SortKey.NFL
dokonuje porównania numerycznego linii numbers.In fakt, sort_stats(SortKey.NFL)
jest taki sam jaksort_stats(SortKey.NAME, SortKey.FILENAME, SortKey.LINE)
.
ze względu na kompatybilność wsteczną dozwolone są argumenty liczbowe-1
0
1
I2
. Są one interpretowane jako 'stdname'
'calls'
'time'
I 'cumulative'
. Jeśli używany jest ten format oldstyle (numeryczny), zostanie użyty tylko jeden klucz sortowania (klucz numeryczny), a dodatkowe argumenty zostaną po cichu zignorowane.
nowość w wersji 3.7: Dodano sortkey enum.
reverse_order
()¶
ta metoda dla klasyStats
odwraca kolejność list podstawowych w obiekcie. Zauważ, że domyślnie rosnąca kolejność vsdescending jest prawidłowo wybierana na podstawie wybranego klucza sortowania.
print_stats
(*ograniczenia)¶
ta metoda dla klasyStats
wypisuje raport zgodnie z definicjąprofile.run()
.
kolejność wydruku jest oparta na ostatniej operacjisort_stats()
wykonanej na obiekcie (obiekt tocaveats wadd()
Istrip_dirs()
).
podane argumenty (jeśli występują) mogą być użyte do ograniczenia listy do ważnych pozycji. Początkowo listę przyjmuje się za kompletny zestaw funkcji profilowanych. Każde ograniczenie jest albo liczbą całkowitą (aby wybrać liczbę wierszy), albo ułamkiem dziesiętnym między 0.0 a 1.0 włącznie (zaznaczenie procentu linii) lub łańcuch, który będzie interpretowany jako wyrażenie zbiorcze (aby wzór był zgodny ze standardową nazwą, która jest drukowana).Jeśli podano kilka ograniczeń, są one stosowane kolejno.Na przykład:
print_stats(.1, 'foo:')
ograniczy najpierw drukowanie do pierwszych 10% listy, a następnie tylko printfunctions, które były częścią nazwy pliku .*foo:
. Natomiast polecenie:
print_stats('foo:', .1)
ograniczy listę do wszystkich funkcji o nazwach plików.*foo:
,a następnie wyświetli tylko pierwsze 10% z nich.
print_callers
(*ograniczenia)¶
ta metoda dla klasyStats
wypisuje listę wszystkich funkcji, które wywołały każdą z funkcji w profilowanej bazie danych. Kolejność jest identyczna z tą podaną przez print_stats()
, a definicja argumentu ograniczającego jest również identyczna. Każdy rozmówca jest zgłaszany na własnej linii. Format różni się nieco w zależności od profilu, który wygenerował statystyki:
-
z
profile
, liczba jest wyświetlana w nawiasach po każdym wywołaniu, aby pokazać, ile razy to konkretne wywołanie zostało wykonane. Dla wygody, druga liczba bez nawiasów powtarza skumulowany czas spędzony w funkcji po prawej stronie. -
z
cProfile
, każdy wywołujący jest poprzedzony trzema liczbami: ilośc razy to konkretne wywołanie zostało wykonane, oraz całkowity i sumaryczny czas spędzony w bieżącej funkcji, gdy została wywołana przez tego konkretnego wywołującego.
print_callees
(*ograniczenia)¶
ta metoda dla klasy Stats
wypisuje listę wszystkich funkcji, które zostały wywołane przez wskazaną funkcję. Pomijając to odwrócenie wywołania (re: called vs was called by), argumenty są identyczne z metodą print_callers()
.
get_stats_profile
()¶
ta metoda zwraca instancję StatsProfile, która zawiera mapowanie nazw funkcji do instancji FunctionProfile. Każda FunctionProfileinstance przechowuje informacje związane z profilem funkcji, takie jak czas uruchomienia funkcji, ile razy została wywołana, itd…
nowość w wersji 3.9: dodano następujące dataclasses: StatsProfile, FunctionProfile.Dodano następującą funkcję: get_stats_profile.