Versión: 2.x, 3.x
De forma estándar, Python permite medir el tiempo transcurrido durante la ejecución de un determinado código, a través del módulo timeit. Éste es útil en pequeñas proporciones y resulta muy fácil de implementar.
from timeit import timeit print(timeit("'Hello, world!'.replace('Hello', 'Goodbye')"))
La función timeit.timeit
requiere una porción de código Python en forma de cadena y la ejecuta, por defecto, 10.000 veces, y retorna el tiempo en segundos que ha tomado.
0.382205010985
Para indicar la cantidad de veces en la que es ejecutado, puede indicarse el parámetro number
.
print(timeit("'Hello, world!'.replace('Hello', 'Goodbye')", number=500))
Imprime:
0.000206078515186
Números muy pequeños son representados con la notación científica.
>>> timeit("'Hello, world!'.replace('Hello', 'Goodbye')", number=1) 2.54867421608e-06
Haciendo uso del segundo parámetro setup
, el código establecido en éste será ejecutado antes de iniciar la repetición.
timeit("'Hello, world!'.replace(target, replace_with)", "target = 'Hello'; replace_with = 'Goodbye'")
La herramienta puede también ser utilizada a través de la línea de comandos:
python -m timeit "'Hello, world!'.replace('Hello', 'Goodbye')"
1000000 loops, best of 3: 0.385 usec per loop
Para medir el tiempo transcurrido durante la ejecución de una función, el siguiente decorador, que hace uso de la función time.time, me ha resultado útil al momento de desarrollar.
from time import time def count_elapsed_time(f): """ Decorator. Execute the function and calculate the elapsed time. Print the result to the standard output. """ def wrapper(): # Start counting. start_time = time() # Take the original function's return value. ret = f() # Calculate the elapsed time. elapsed_time = time() - start_time print("Elapsed time: %0.10f seconds." % elapsed_time) return ret return wrapper
Ejemplo:
@count_elapsed_time def test(): for i in range(10000): "Hello, world!".replace("Hello", "Goodbye") test()
Imprime:
Elapsed time: 0.0149998665 seconds.
En base a este código, puede implementarse en llamadas a funciones individuales.
def test(): for i in range(10000): "Hello, world!".replace("Hello", "Goodbye") start_time = time() test() elapsed_time = time() - start_time print("Elapsed time: %.10f seconds." % elapsed_time)
Curso online 👨💻
¡Ya lanzamos el curso oficial de Recursos Python en Udemy!
Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter
en 2024.
Consultoría 💡
Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.
rcalex says:
gracias por el aporte, la utilice y solo recomendaría pasa los argumentos *args, **kwargs par que los argumentos de la función final le lleguen a su destino.
Muchas gracias»