Python timeit(): medición de tiempo de ejecución con ejemplos prácticos
Python timeit(): medición de tiempo de ejecución con ejemplos prácticos
¿Qué es timeit() en Python?
timeit() de Python es un módulo integrado diseñado para medir el tiempo de ejecución de pequeños fragmentos de código con alta precisión. Por defecto, ejecuta la sentencia un millón de veces y reporta la ejecución más rápida, lo que ayuda a comparar el rendimiento de diferentes implementaciones.
Sintaxis
timeit.timeit(stmt, setup, timer, number)
Parámetros
- stmt – El código a medir. Por defecto es
pass. - setup – Código que se ejecuta una vez antes de
stmt. Por defecto espass. - timer – Función de temporizador opcional. El módulo proporciona una por defecto adecuada.
- number – Cuántas veces se ejecuta
stmt. Por defecto 1,000,000.
Importa el módulo primero:
import timeit
Ejemplo 1 – Medir una expresión simple
# Probar una operación aritmética básica
import timeit
print(timeit.timeit("output = 10*5"))
Salida típica:
0.06127880399999999
Esto muestra el tiempo (en segundos) tomado para la más rápida de un millón de ejecuciones.
Medición de múltiples líneas
timeit puede manejar código multi-línea separando sentencias con punto y coma o pasando una cadena entre comillas triples.
Usando punto y coma
import timeit
print("El tiempo tomado es", timeit.timeit(stmt="a=10;b=10;suma=a+b"))
Salida:
El tiempo tomado es 0.137031482
Usando comillas triples
import timeit
import_modulo = "import random"
codigo_prueba = '''
def prueba():
return random.randint(10, 100)
'''
print(timeit.repeat(stmt=codigo_prueba, setup=import_modulo))
Salida:
C:\pythontest>python testtimeit.py El tiempo tomado es 0.182619178
Métodos clave
- timeit.default_timer() – Devuelve la hora actual con la mejor resolución disponible.
- timeit.repeat(stmt, setup, timer, repeat, number) – Ejecuta
timeit()repetidamente, devolviendo una lista de los mejores tiempos para cada corrida.
Ejemplo 1 – Usando timeit.timeit()
# Probar una función que devuelve un entero aleatorio
import timeit
import_modulo = "import random"
codigo_prueba = '''
def prueba():
return random.randint(10, 100)
'''
print(timeit.timeit(stmt=codigo_prueba, setup=import_modulo))
Salida:
0.46715912400000004
Ejemplo 2 – Usando default_timer()
# Medir una sola llamada a función
import timeit
import random
def prueba():
return random.randint(10, 100)
tiempo_inicio = timeit.default_timer()
print("La hora de inicio es:", tiempo_inicio)
prueba()
print("La diferencia de tiempo es:", timeit.default_timer() - tiempo_inicio)
Salida:
La hora de inicio es: 0.220261875 La diferencia de tiempo es: 0.0004737320000000045
Ejemplo 3 – Usando timeit.repeat()
# Ejecutar la prueba cinco veces y capturar los mejores tiempos
import timeit
import_modulo = "import random"
codigo_prueba = '''
def prueba():
return random.randint(10, 100)
'''
print(timeit.repeat(stmt=codigo_prueba, setup=import_modulo, repeat=5))
Salida:
[0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]
Cada entrada es el mejor tiempo para una iteración de los 1,000,000 de ejecuciones.
Uso desde línea de comandos
Puedes invocar timeit directamente desde la terminal:
python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [sentencia_codigo ...]
-n N– Número de bucles para la sentencia.-r N– Cuántas veces se repite todo el proceso de medición.-s S– Código de configuración ejecutado una vez antes de medir.-t– Usartime.time()como temporizador.-c– Usartime.clock()como temporizador.-h– Mostrar ayuda.
Ejemplo
C:\pythontest>python -m timeit -s 'texto="hola mundo"' 20000000 loops, best of 5: 13.1 nsec per loop
Otra forma conveniente es llamar a timeit desde el REPL:
import timeit
print("El tiempo tomado es", timeit.timeit(stmt="a=10;b=10;suma=a+b"))
Salida:
El tiempo tomado es 0.15048536300000137
Por qué timeit() es la mejor herramienta para medir código Python
- Ejecuta la sentencia muchas veces (por defecto 1,000,000) y devuelve la ejecución más rápida, dando una estimación fiable.
- El recolector de basura se desactiva durante la medición, evitando que sesgue los resultados.
- Selecciona automáticamente el temporizador más preciso para tu sistema operativo (p. ej.,
time.clock()en Windows,time.time()en macOS/Linux).
Resumen
El módulo timeit es esencial para benchmarking de fragmentos cortos de Python. Sus parámetros son directos:
- stmt – Código a medir.
- setup – Código de configuración único.
- timer – Función de temporizador opcional.
- number – Cuántas veces se ejecuta
stmt.
Asegúrate de usar timeit para mediciones precisas y repetibles.
python
- Python: Obtener Hora Actual y Datos de Zona Horaria Fácilmente
- Dominar el Módulo time de Python: Funciones, Structs y Ejemplos Prácticos
- Dominar time.sleep() en Python: Mejores Prácticas, Multihilo y Ejemplos Reales
- Domine str.count() en Python: Cómo Contar Caracteres y Subcadenas con Ejemplos
- Domine el Formateo de Strings en Python con format(): Ejemplos Claros
- Domine el Método String.find() en Python: Sintaxis, Ejemplos y Alternativas
- Dominando las funciones lambda en Python: ejemplos prácticos y mejores prácticas
- Función round() en Python explicada con ejemplos prácticos
- Dominando la función map() de Python: sintaxis, ejemplos y mejores prácticas
- Counter de collections en Python: conteo eficiente, actualización y operaciones aritméticas
- Entendiendo type() e isinstance() en Python: ejemplos prácticos