La Clase Stats¶
El análisis de los datos del perfilador se realiza utilizando la clase Stats
.
classpstats.
Stats
(*nombres de archivo o perfil, stream = sys.stdout)¶
Este constructor de clases crea una instancia de un «objeto de estadísticas»a partir de afilename (o lista de nombres de archivo) o de una instancia Profile
. La salida se imprimirá en la secuencia especificada por secuencia.
El archivo seleccionado por el constructor anterior debe haber sido creado por la versión correspondiente de profile
o cProfile
. Para ser específicos, no hay compatibilidad de archivos garantizada con versiones futuras de este generador de perfiles, y no hay compatibilidad con archivos producidos por otros desarrolladores, o el mismo generador de perfiles ejecutado en un sistema operativo diferente. Si se proporcionan varios archivos, se fusionarán todas las estadísticas de funciones idénticas, de modo que se pueda tener en cuenta una visión general de varios procesos en un solo informe. Si es necesario combinar archivos adicionales con datos en un objeto Stats
, se puede usar el método add()
.
En lugar de leer los datos de perfil de un archivo, se puede usar un objeto cProfile.Profile
o profile.Profile
como fuente de datos de perfil.
Stats
objetos tienen los siguientes métodos:
strip_dirs
()¶
Este método para el Stats
clase quita todas las principales pathinformation de nombres de archivo. Es muy útil para reducir el tamaño de la impresión para que quepa dentro de (cerca de) 80 columnas. Este método modifica el objeto y la información eliminada se pierde. Después de realizar la operación astrip, se considera que el objeto tiene sus entradas en un orden» aleatorio», como lo fue justo después de la inicialización y carga del objeto.Si strip_dirs()
hace que dos nombres de función sean indistinguibles (están en la misma línea del mismo nombre de archivo y tienen el mismo nombre de función), entonces las estadísticas de estas dos entradas se acumulan en una sola entrada.
add
(*nombres de archivo)¶
Este método de la clase Stats
acumula información de perfil adicional en el objeto de perfil actual. Sus argumentos deben referirse a nombres de archivo creados por la versión correspondiente de profile.run()
o cProfile.run()
. Las estadísticas para funciones de nombre idéntico (re: archivo, línea,nombre) se acumulan automáticamente en estadísticas de funciones individuales.
dump_stats
(nombre de archivo)¶
Guarde los datos cargados en el objetoStats
en un nombre de archivo. El archivo se crea si no existe y se sobrescribe si ya existe. Esto es equivalente al método del mismo nombre en las clases profile.Profile
y cProfile.Profile
.
sort_stats
(*claves)¶
Este método modifica el objeto Stats
ordenándolo de acuerdo con los criterios suministrados. El argumento puede ser una cadena o un SortKeyenum identificar la base de una especie (por ejemplo: 'time'
'name'
SortKey.TIME
o SortKey.NAME
). El argumento SortKey enumers tiene ventaja sobre el argumento string en el sentido de que es más robusto y menos propenso al error.
Cuando se proporciona más de una clave, se utilizan claves adicionales como criterio secundario cuando hay igualdad en todas las claves seleccionadas antes de ellas. Por ejemplo, sort_stats(SortKey.NAME, SortKey.FILE)
ordenará todas las entradas de acuerdo con su nombre de función y resolverá todos los vínculos(nombres de función idénticos) ordenando por nombre de archivo.
Para el argumento de cadena, se pueden usar abreviaturas para cualquier nombre de clave, siempre que la abreviatura sea inequívoca.
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.TIEMPO |
tiempo interno |
|
N/A |
tiempo interno |
Tenga en cuenta que todos los tipos de estadísticas están en orden descendente (colocando primero los elementos que consumen más tiempo), donde el nombre, el archivo y las búsquedas de números de línea están en orden ascendente (alfabético). La sutil distinción entreSortKey.NFL
y SortKey.STDNAME
es que el nombre estándar es una separación del nombre tal como está impreso, lo que significa que los números de línea incrustados se comparan de manera extraña. Por ejemplo, las líneas 3, 20 y 40 (si los nombres de archivo fueran los mismos) aparecerían en el orden de cadena 20, 3 y 40.In contrast, SortKey.NFL
hace una comparación numérica de la línea numbers.In hecho, sort_stats(SortKey.NFL)
es lo mismo quesort_stats(SortKey.NAME, SortKey.FILENAME, SortKey.LINE)
.
Por motivos de compatibilidad, los argumentos numéricos -1
0
1
y 2
están permitidos. Se interpretan como 'stdname'
'calls'
'time'
y 'cumulative'
respectivamente. Si se utiliza este formato de estilo antiguo (numérico), solo se utilizará una clave de ordenación (la clave numérica) y los argumentos adicionales se ignorarán silenciosamente.
Nuevo en la versión 3.7: Se ha añadido la enumeración SortKey.
reverse_order
()¶
Este método para la clase Stats
invierte el orden de la lista básica dentro del objeto. Tenga en cuenta que, de forma predeterminada, el orden descendente de vsd se selecciona correctamente en función de la clave de ordenación elegida.
print_stats
(*restricciones)¶
Este método para la clase Stats
imprime un informe como se describe en la definición profile.run()
.
El orden de impresión se basa en la última operaciónsort_stats()
realizada en el objeto (asunto a guardar en add()
ystrip_dirs()
).
Los argumentos proporcionados (si los hay) se pueden usar para limitar la lista a las entradas significativas. Inicialmente, la lista se toma como el conjunto completo de funciones perfiladas. Cada restricción es un entero (para seleccionar un recuento de líneas), o una fracción decimal entre 0,0 y 1.0 inclusive (para seleccionar un porcentaje de líneas), o una cadena que se interpretará como una expresión rectangular (para que el patrón coincida con el nombre estándar que se imprime).Si se proporcionan varias restricciones, se aplicarán de forma secuencial.Por ejemplo:
print_stats(.1, 'foo:')
primero limitaría la impresión al primer 10% de la lista, y luego solo las funciones de impresión que formaban parte del nombre de archivo .*foo:
. En contraste, el comando:
print_stats('foo:', .1)
limitaría la lista a todas las funciones con nombres de archivo .*foo:
, y luego procedería a imprimir solo el primer 10% de ellas.
print_callers
(*restricciones)¶
Este método para la clase Stats
imprime una lista de todas las funciones que llaman a cada función en la base de datos de perfiles. El orden es idéntico al proporcionado por print_stats()
, y la definición del argumento restrictivo también es idéntica. Cada llamada es reportada en su propia línea. El formato difiere ligeramente dependiendo del proveedor que produjo las estadísticas:
-
Con
profile
, se muestra un número entre paréntesis después de cada llamada para mostrar cuántas veces se realizó esta llamada específica. Para mayor comodidad, un segundo número sin paréntesis repite el tiempo acumulado pasado en la función de la derecha. -
Con
cProfile
, cada llamante va precedido de tres números: el número de veces que se realizó esta llamada específica, y el tiempo total y acumulativo pasado en la función actual mientras fue invocada por este llamante específico.
print_callees
(*restricciones)¶
Este método para la clase Stats
imprime una lista de todas las funciones que fueron llamadas por la función indicada. Aparte de esta inversión de la dirección de llamadas (re: called vs fue llamado por), los argumentos androdering son idénticos al método print_callers()
.
get_stats_profile
()¶
Este método devuelve una instancia de StatsProfile, que contiene una asignación de nombres de funciones a instancias de FunctionProfile. Cada FunctionProfileinstance contiene información relacionada con el perfil de la función, como cuánto tardó en ejecutarse la función, cuántas veces se llamó, etc.
Nuevo en la versión 3.9: Se agregaron las siguientes clases de datos: StatsProfile, FunctionProfile.Se agregó la siguiente función: get_stats_profile.