Saltar al contenido

medir con precisión el tiempo que tarda la función python

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.pycó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.

¡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 *