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

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…

2 días ago

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

En la serie Creación de una API REST con Express y TypeScript construimos una API…

4 días ago

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…

1 semana ago

Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows

En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…

2 semanas ago

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

2 semanas ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

3 semanas ago

This website uses cookies.