Python

Medir el tiempo de ejecución en Python con pyinstrument

A la hora de optimizar un programa para que se ejecute de forma más rápida una información clave es cuáles son las funciones que más tiempo de procesado consumen. Para centrarnos en mejorar el rendimiento de estas. Por mucho que se mejore el rendimiento de una función que suponga una parte ínfima de la ejecución total, el efecto que se observará en el programa será casi nulo. Pero, mejoras menores en las funciones clave puede suponer un aumento del rendimiento espectacular. Para medir el tiempo de ejecución en Python se puede recurrir a las funciones de time o alguna herramienta de profile. Por ejemplo, pyinstrument.

Instalación de pyinstrument

El método más sencillo para instalar pyinstrument en nuestro entorno de Python es mediante el comando pip, para lo que se debe escribir en la terminal.

pip install pyinstrument

Una vez hecho esto ya podemos usar esta herramienta en nuestro sistema.

Medir el tiempo de ejecución en un script de Python

Supongamos que tenemos un script como el siguiente en el que existen tres funciones y queremos saber en cuál de ellas pasa más tiempo el programa.

from time import sleep

def function_one():
    sleep(0.01)


def function_two():
    sleep(0.09)

    
def function_three():
    sleep(0.03)

    
for _ in range(10):
    function_one()
    function_two()
    function_three()

Ahora que tenemos instalado pyinstrument, si el archivo donde se encuentra el código se llama test.py, solamente es necesario ejecutar el siguiente comando para obtener el siguiente informe con los tiempos de ejecución.

Informe con los tiempos de ejecución que se pude obtener en la terminal con pyinstrument

Un informe en el que se puede ver claramente, incluso con una escala de colores, en las funciones que el programa pasa más tiempo. En este caso se puede ver que dónde más tiempo pasa el programa es en function_two(), por lo que el tiempo de esta se puede ver en rojo. Seguiod de function_three(), en amarillo, y function_one() en verde. Por lo que, la mejor opción es céntranos en mejorar el rendimiento de function_two() antes que las otras dos funciones.

Informe con los tiempos de ejecución que se pude obtener en un Notebook con pyinstrument

Medir el tiempo de ejecución en Jupyter Notebook

En esta ocasión se ha visto los fundamentos de pyinstrument. Una herramienta que puede ser de gran utilidad cuando necesitamos medir el tiempo de ejecución en Python y saber cuanto tiempo pasa el programa en cada función. Aunque es posible hacer esto con las funciones de la librería estándar time, algo que hemos hecho en múltiples ocasiones en para comparar el rendimiento de diferentes librerías, el uso de pyinstrument es más sencillo y los informes más fáciles de interpretar.

Conclusiones

Imagen de Simone Lugli en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Cómo Verificar la Normalidad de tus Datos antes de un Test Estadístico

Antes de aplicar muchos tests estadísticos clásicos (el t-test, el ANOVA, la regresión lineal) aparece…

7 minutos ago

Docker Compose: el día a día. Cómo ver qué funciona y qué no

Si acabas de montar tu aplicación en Docker Compose, la primera pregunta que haces cada…

2 días ago

Migrar tslane a un paquete dual CommonJS y ESM con tsup y Vitest

tslane es la plantilla que uso como punto de partida para mis librerías TypeScript, nacida…

1 semana ago

Cómo construir tu primer scorecard paso a paso

En los artículos anteriores de esta serie vimos la teoría detrás del credit scoring: qué…

1 semana ago

Actualizar expresslanets a ES Modules con tsx y Vitest

expresslanets es la plantilla de API REST con Express y TypeScript que empezó como una…

2 semanas ago

Pareto/NBD: cuando el abandono silencioso cambia el CLV

En el artículo del Dashboard vimos que Pareto/NBD aparecía junto a BG/NBD con un ajuste…

2 semanas ago

This website uses cookies.