Saltar al contenido

¿Cómo medir el tiempo transcurrido entre líneas de código en Python?

Solución:

Si desea medir el tiempo de la CPU, puede usar time.process_time() para Python 3.3 y superior:

import time
start = time.process_time()
# your code here    
print(time.process_time() - start)

La primera llamada enciende el temporizador y la segunda llamada le dice cuántos segundos han transcurrido.

También hay una función time.clock(), pero está obsoleto desde Python 3.3 y se eliminará en Python 3.8.

Hay mejores herramientas de creación de perfiles como timeit y profile, sin embargo time.process_time () medirá el tiempo de la CPU y esto es lo que está preguntando.

Si desea medir el tiempo del reloj de pared, use time.time().

También puedes usar time Biblioteca:

import time

start = time.time()

# your code

# end

print(f'Time: {time.time() - start}')

Con la ayuda de una pequeña clase de conveniencia, puede medir el tiempo empleado en líneas con sangría como esto:

with CodeTimer():
   line_to_measure()
   another_line()
   # etc...

Que mostrará lo siguiente después de que las líneas sangradas terminen de ejecutarse:

Code block took: x.xxx ms

ACTUALIZAR: Ahora puede obtener la clase con pip install linetimer y luego from linetimer import CodeTimer. Vea este proyecto de GitHub.

El código de la clase anterior:

import timeit

class CodeTimer:
    def __init__(self, name=None):
        self.name = " '"  + name + "'" if name else ''

    def __enter__(self):
        self.start = timeit.default_timer()

    def __exit__(self, exc_type, exc_value, traceback):
        self.took = (timeit.default_timer() - self.start) * 1000.0
        print('Code block' + self.name + ' took: ' + str(self.took) + ' ms')

Entonces podrías nombrar los bloques de código quieres medir:

with CodeTimer('loop 1'):
   for i in range(100000):
      pass

with CodeTimer('loop 2'):
   for i in range(100000):
      pass

Code block 'loop 1' took: 4.991 ms
Code block 'loop 2' took: 3.666 ms

Y nido ellos:

with CodeTimer('Outer'):
   for i in range(100000):
      pass

   with CodeTimer('Inner'):
      for i in range(100000):
         pass

   for i in range(100000):
      pass

Code block 'Inner' took: 2.382 ms
Code block 'Outer' took: 10.466 ms

Con respecto a timeit.default_timer(), utiliza el mejor temporizador según el sistema operativo y la versión de Python, consulte esta respuesta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *