Una respuesta para QGIS 3.16 (no probado en versiones anteriores)
Tienes 3 grupos posibles en el perfilador en este momento en QGIS (inicio
, cargadeproyecto
, renderizado
). Debes tener en cuenta que ahora hay un widget con el contenido del perfilador (ver captura de pantalla)
![Interfaz gráfica de usuario de QGIS con panel para perfilador mostrado]()
Para obtener la lista actual de grupos utilizados, haz QgsApplication.profiler().groups()
Para obtener el tiempo de todas las mediciones existentes (por defecto o las tuyas propias)
perfilador = QgsApplication.profiler()
for grupo in perfilador.groups():
nombreGrupoTraducido = perfilador.translateGroupName(grupo)
for hijo in perfilador.childGroups('', grupo):
valor = perfilador.profileTime(hijo, grupo)
grupoHijo = perfilador.childGroups(hijo, grupo)
# grupo = nombre en el combobox de la GUI pero amigable para humanos
# hijo = nombre de la primera columna
# Tiempo de ejecución
print(nombreGrupoTraducido, hijo, valor)
if len(grupoHijo) > 0:
for subGrupo in grupoHijo:
print(subGrupo, perfilador.profileTime(subGrupo, grupo))
# Cosa rara aquí = el orden al recorrer difiere del que se muestra en la GUI...
# Para el tiempo global por grupo, en teoría, deberías hacer lo siguiente
# pero no funciona (retorna 0.0)
# En cambio, puedes sumar valores en el bucle anterior para obtener el tiempo total "correcto"
for grupo in perfilador.groups():
print(grupo, perfilador.totalTime(grupo))
Si quieres tus propias medidas con tu propio grupo
from time import sleep
perfilador = QgsApplication.profiler()
perfilador.start('nombre de tu tarea 1', 'nombre de tu nuevo grupo')
# Para simular tiempo de espera pero normalmente, ejecutas tu código personalizado
sleep(11.0)
perfilador.end('nombre de tu nuevo grupo')
perfilador.start('nombre de tu tarea 2', 'nombre de tu nuevo grupo')
# Para simular tiempo de espera pero normalmente, ejecutas tu código personalizado
sleep(8.0)
perfilador.end('nombre de tu nuevo grupo')
# Forma alterna de evitar start y end usando contexto de Python
# Desventaja: no puedes registrar en tu propio grupo sino solo en el grupo de inicio (por defecto)
with QgsRuntimeProfiler.profile('qwerty'):
sleep(2)
# Hacer algo