libreria fechas fecha biblioteca actual python datetime time time-measurement

fechas - Prueba de velocidad de Python-Diferencia de tiempo-milisegundos



fechas en python (12)

¿Cuál es la forma correcta de comparar 2 veces en Python para probar la velocidad de una sección de código? Intenté leer los documentos API. No estoy seguro de entender lo de Timedelta.

Hasta ahora tengo este código:

from datetime import datetime tstart = datetime.now() print t1 # code to speed test tend = datetime.now() print t2 # what am I missing? # I''d like to print the time diff here


Aquí hay una función personalizada que imita las funciones de tic toc de Matlab / Octave.

Ejemplo de uso:

time_var = time_me(); # get a variable with the current timestamp ... run operation ... time_me(time_var); # print the time difference (e.g. ''5 seconds 821.12314 ms'')

Función:

def time_me(*arg): if len(arg) != 0: elapsedTime = time.time() - arg[0]; #print(elapsedTime); hours = math.floor(elapsedTime / (60*60)) elapsedTime = elapsedTime - hours * (60*60); minutes = math.floor(elapsedTime / 60) elapsedTime = elapsedTime - minutes * (60); seconds = math.floor(elapsedTime); elapsedTime = elapsedTime - seconds; ms = elapsedTime * 1000; if(hours != 0): print ("%d hours %d minutes %d seconds" % (hours, minutes, seconds)) elif(minutes != 0): print ("%d minutes %d seconds" % (minutes, seconds)) else : print ("%d seconds %f ms" % (seconds, ms)) else: #print (''does not exist. here you go.''); return time.time()


Desde Python 2.7 existe el método timedelta.total_seconds (). Entonces, para obtener los milisegundos transcurridos:

>>> import datetime >>> a = datetime.datetime.now() >>> b = datetime.datetime.now() >>> delta = b - a >>> print delta 0:00:05.077263 >>> int(delta.total_seconds() * 1000) # milliseconds 5077


El siguiente código debería mostrar el tiempo detla ...

from datetime import datetime tstart = datetime.now() # code to speed test tend = datetime.now() print tend - tstart


Es posible que desee examinar los módulos de perfil . Obtendrá una mejor lectura de dónde están sus ralentizaciones, y gran parte de su trabajo estará totalmente automatizado.



No soy un programador de Python, pero sé cómo usar Google y esto es lo que encontré: utiliza el operador "-". Para completar tu código:

from datetime import datetime tstart = datetime.now() # code to speed test tend = datetime.now() print tend - tstart

Además, parece que puede usar la función strftime () para formatear el cálculo del intervalo de tiempo a fin de mostrar la hora sin embargo le hace feliz.


Puede usar timeit como este para probar un script llamado module.py

$ python -mtimeit -s ''import module''


Sé que es tarde, pero realmente me gusta usar:

start = time.time() ##### your timed code here ... ##### print "Process time: " + (time.time() - start)

time.time() te da segundos desde la época. Debido a que este es un tiempo estandarizado en segundos, simplemente puede restar la hora de inicio del tiempo de finalización para obtener el tiempo del proceso (en segundos). time.clock() es bueno para la evaluación comparativa, pero he encontrado que es inútil si quieres saber cuánto tiempo tomó tu proceso. Por ejemplo, es mucho más intuitivo decir "mi proceso demora 10 segundos" que decir "mi proceso requiere 10 unidades de reloj del procesador"

>>> start = time.time(); sum([each**8.3 for each in range(1,100000)]) ; print (time.time() - start) 3.4001404476250935e+45 0.0637760162354 >>> start = time.clock(); sum([each**8.3 for each in range(1,100000)]) ; print (time.clock() - start) 3.4001404476250935e+45 0.05

En el primer ejemplo anterior, se muestra un tiempo de 0.05 para time.clock () vs 0.06377 para time.time ()

>>> start = time.clock(); time.sleep(1) ; print "process time: " + (time.clock() - start) process time: 0.0 >>> start = time.time(); time.sleep(1) ; print "process time: " + (time.time() - start) process time: 1.00111794472

En el segundo ejemplo, de alguna manera, el tiempo del procesador muestra "0" a pesar de que el proceso durmió por un segundo. time.time() muestra correctamente un poco más de 1 segundo.


Simplemente puede imprimir la diferencia:

print tend - tstart


También puedes usar:

import time start = time.clock() do_something() end = time.clock() print "%.2gs" % (end-start)

O podrías usar los perfiladores de Python .


time.time () / datetime es bueno para un uso rápido, pero no siempre es 100% preciso. Por esa razón, me gusta utilizar uno de los perfiles de biblioteca estándar (especialmente hotshot) para descubrir qué es qué.


datetime.timedelta es solo la diferencia entre dos fechas ... por lo que es como un período de tiempo, en días / segundos / microsegundos

>>> a = datetime.datetime.now() >>> b = datetime.datetime.now() >>> c = b - a >>> c datetime.timedelta(0, 4, 316543) >>> c.days 0 >>> c.seconds 4 >>> c.microseconds 316543

Tenga en cuenta que c.microseconds solo devuelve la porción de microsegundos del timedelta. Por motivos de tiempo, siempre use c.total_seconds() .

Puede hacer todo tipo de operaciones matemáticas con datetime.timedelta, por ejemplo:

>>> c / 10 datetime.timedelta(0, 0, 431654)

Sin embargo, podría ser más útil observar el tiempo de CPU en lugar del tiempo de reloj de pared ... eso es dependiente del sistema operativo, sin embargo ... en sistemas de tipo Unix, revisa el comando ''tiempo''.