Medir el tiempo de ejecución en Python con pyinstrument

Publicado el 07 febrero 2022 por Daniel Rodríguez @analyticslane

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