¿Qué es import timeit y para qué puedes usarlo en Python?

| Última modificación: 17 de enero de 2025 | Tiempo de Lectura: 4 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Hay muchas formas de medir el rendimiento de nuestro código, pero ninguna es tan precisa y tan práctica como el módulo import timeit. Pocas herramientas son tan útiles para desarrolladores como esta, en el aspecto del rendimiento. El día de hoy te quiero mostrar cómo es que funciona este módulo y qué funcionalidades tiene dentro de Python.

import timeit

Otros módulos similares

Como dijimos, existen varios módulos que cumplen funciones similares. Veamos un análisis comparativo de cada uno de ellos

Herramienta/MóduloPropósito principalVentajasDesventajasCasos de uso recomendados
timeitMedir el tiempo de ejecución de pequeños fragmentos de código.– Alta precisión.- Fácil de usar.- Evita trampas comunes como interferencia del recolector de basura.– Limitado a fragmentos pequeños de código.- Poco práctico para análisis extensos o complejos.Comparar la eficiencia de diferentes implementaciones de funciones pequeñas.
timeProporcionar la hora actual y medir el tiempo transcurrido entre eventos.– Simple y directo.- Ideal para medir eventos de larga duración.– Menor precisión que timeit.- No maneja configuraciones avanzadas como setup.Medir el tiempo total de ejecución de scripts o procesos largos.
cProfileRealizar un análisis de rendimiento detallado de un programa completo.– Detalla el tiempo que cada función consume.- Muestra cuántas veces se llama a cada función.– Más complejo de usar que timeit.- Produce informes grandes que pueden ser difíciles de leer.Identificar cuellos de botella en programas o aplicaciones completas.
profileSimilar a cProfile, pero más flexible y configurable para analizar programas.– Totalmente personalizable.- Más sencillo para scripts pequeños en comparación con cProfile.– Más lento que cProfile.- Menos eficiente para programas grandes.Análisis personalizado de scripts pequeños a medianos donde se requiere flexibilidad.
line_profilerMedir el tiempo de ejecución de cada línea de código dentro de una función.– Muestra un desglose línea por línea.- Excelente para depurar funciones críticas.– Necesita instalación adicional.- Limitado a funciones específicas.Analizar funciones críticas en profundidad para optimización de rendimiento.
py-spyAnalizar rendimiento en aplicaciones Python en tiempo real sin detener su ejecución.– No requiere modificar el código.- Funciona en tiempo real.- Compatible con entornos multihilo.– Solo análisis general, no tan detallado como cProfile o timeit.- Necesita instalación externa.Inspeccionar aplicaciones en producción o detectar problemas en tiempo real.
perf_counter (de time)Medir el tiempo transcurrido con alta resolución.– Ideal para mediciones precisas.- Fácil integración en scripts.– No está diseñado para mediciones repetitivas o comparativas como timeit.Medir intervalos de tiempo precisos dentro de scripts o funciones específicas.

¿Qué es el módulo timeit?

El timeit es como el metrónomo musical de la programación que procura por que los instrumentos musicales queden bien afinados, con notas precisas y armoniosas. En el caso de import timeit, este mide con exactitud los tiempos de ejecución y te ayuda a identificar qué fragmentos son más rápidos y cuáles podrían mejorarse.

Import timeit es la forma en la que podemos usar este módulo dentro de Python, ya que sirve para importarlo a nuestro código. Está diseñado para medir el tiempo que tarda en ejecutarse un fragmento pequeño de código y lo mejor es que evita trampas comunes como interferencias del recolector de basura, al mismo tiempo que asegura resultados fiables.

¿Para qué sirve el módulo timeit?

El módulo import timeit tiene como objetivo medir el rendimiento de fragmentos de código. Algunas de las formas más comunes de aplicarlo son:

  • Comparar diferentes implementaciones de una misma funcionalidad para elegir la más eficiente.
  • Identificar cuellos de botella en pequeñas secciones del código.
  • Mejorar el rendimiento de algoritmos mediante pruebas iterativas.

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Veamos un ejemplo en el que tienes tres formas diferentes de unir una lista de números en un string y quieres saber cuál es la más eficiente:

import timeit

print(timeit.timeit('"-".join(str(n) for n in range(100))', number=10000))
print(timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000))
print(timeit.timeit('"-".join(map(str, range(100)))', number=10000))

Este código ejecutará cada fragmento diez mil veces y te devolverá los tiempos de ejecución para que puedas identificar cuál es la mejor opción.

¿Cómo usar import timeit desde la línea de comandos?

Otra forma de usar el módulo de import timeit es directamente desde la terminal de Python. Cuando necesitas hacer pruebas rápidas esta es una muy buena opción. El comando que debes usar es:

python -m timeit -n 10000 "statement"

Por ejemplo, para evaluar el tiempo que toma verificar si un carácter está en una cadena, puedes usar:

python -m timeit -s "text = 'example string'; char = 'g'" "char in text"

Esto ejecutará la instrucción la cantidad de veces especificada en el parámetro n y devolverá el tiempo promedio por ciclo.

¿Cuáles son las funciones más destacadas del import timeit?

El módulo de timeit tiene funciones que definen claramente sus intenciones. Veamos algunas de las más importantes:

  • timeit: Ejecuta un fragmento de código repetidamente y devuelve el tiempo promedio.
  • repeat: Corre varias veces el método timeit para obtener una lista de resultados.
  • default_timer: Usa un temporizador de alta precisión para medir los tiempos.

Veamos un ejemplo en el que un usuario define una función:

def test():
L = [i for i in range(100)]

import timeit
print(timeit.timeit("test()", setup="from __main__ import test"))

Este ejemplo incluye un parámetro setup que prepara el entorno antes de medir el código principal.

Algunas recomendaciones a seguir…

Si quieres obtener resultados mucho más precisos en el uso de import timeit, debes acatar estas recomendaciones:

  1. Usa el parámetro setup para importar módulos o definir variables necesarias antes de ejecutar tu código.
  2. Asegúrate de que las pruebas se realicen en un entorno controlado, evitando interferencias de otros procesos.
  3. Considera desactivar temporalmente el recolector de basura si estás midiendo fragmentos sensibles a su impacto.

Si te interesó el tema y quieres seguir aprendiendo sobre cosas similares, escalar en el campo laboral y convertirte en un gran desarrollador de software, debes unirte a nuestro bootcamp en programación desde cero, en el cual hemos preparado los mejores planes de estudio para que puedas salir al mundo laboral rápidamente y lo mejor, bien preparado. ¡No dejes pasar esta gran oportunidad y da el salto hacia un futuro prometedor con nosotros!

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a programar desde cero

Full Stack JR. Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado