Después de de nuestra larga compilación de datos hemos podido resolver este apuro que pueden tener ciertos de nuestros lectores. Te ofrecemos la solución y nuestro objetivo es serte de mucha ayuda.
Solución:
Según la documentación de Python, tiene que ver con la precisión de la función de tiempo en diferentes sistemas operativos:
La función de temporizador predeterminada depende de la plataforma. En Windows, time.clock() tiene una granularidad de microsegundos pero la granularidad de time.time() es 1/60 de segundo; en Unix, time.clock() tiene una granularidad de 1/100 de segundo y time.time() es mucho más preciso. En cualquiera de las plataformas, las funciones de temporizador predeterminadas miden el tiempo del reloj de pared, no el tiempo de la CPU. Esto significa que otros procesos que se ejecutan en la misma computadora pueden interferir con el tiempo… En Unix, puede usar time.clock() para medir el tiempo de la CPU.
Para sacar directamente de timeit.py
código de:
if sys.platform == "win32":
# On Windows, the best timer is time.clock()
default_timer = time.clock
else:
# On most other platforms the best timer is time.time()
default_timer = time.time
Además, trata directamente con la configuración del código de tiempo de ejecución para usted. Si utiliza time
Tienes que hacerlo tú mismo. esto, por supuesto te ahorra tiempo
Configuración de Timeit:
def inner(_it, _timer):
#Your setup code
%(setup)s
_t0 = _timer()
for _i in _it:
#The code you want to time
%(stmt)s
_t1 = _timer()
return _t1 - _t0
Pitón 3:
Desde Python 3.3 puedes usar time.perf_counter()
(temporización de todo el sistema) o time.process_time()
(temporización de todo el proceso), tal como solía usar time.clock()
:
from time import process_time
t = process_time()
#do some stuff
elapsed_time = process_time() - t
la nueva función process_time
no incluirá el tiempo transcurrido durante el sueño.
Pitón 3.7+:
Desde Python 3.7 también puedes usar process_time_ns()
que es similar a process_time()
pero devuelve el tiempo en nanosegundos.
Puede crear un contexto de tiempo (consulte PEP 343) para medir bloques de código con bastante facilidad.
from __future__ import with_statement
import time
class Timer(object):
def __enter__(self):
self.__start = time.time()
def __exit__(self, type, value, traceback):
# Error handling here
self.__finish = time.time()
def duration_in_seconds(self):
return self.__finish - self.__start
timer = Timer()
with timer:
# Whatever you want to measure goes here
time.sleep(2)
print timer.duration_in_seconds()
Parece que el módulo timeit está diseñado para realizar pruebas de rendimiento de algoritmos, en lugar de simplemente monitorear una aplicación. Su mejor opción es probablemente usar el módulo de tiempo, llame time.time()
al principio y al final del segmento que le interesa y reste los dos números. Tenga en cuenta que el número que obtenga puede tener muchos más lugares decimales que la resolución real del temporizador del sistema.
Reseñas y puntuaciones
Si para ti ha resultado de utilidad este post, agradeceríamos que lo compartas con otros entusiastas de la programación de este modo contrubuyes a dar difusión a nuestro contenido.