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.