¿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 de la 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
python
datetime
time
time-measurement
BuddyJoe
fuente
fuente
Respuestas:
datetime.timedelta
es solo la diferencia entre dos fechas y horas ... así que es como un período de tiempo, en días / segundos / microsegundos¡Tenga en cuenta que
c.microseconds
solo devuelve la porción de microsegundos de timedelta! Para fines de tiempo, siempre usec.total_seconds()
.Puede hacer todo tipo de matemáticas con datetime.timedelta, por ejemplo:
Sin embargo, podría ser más útil mirar el tiempo de la CPU en lugar del tiempo del reloj de pared ... eso depende del sistema operativo ... bajo sistemas similares a Unix, consulte el comando 'tiempo'.
fuente
int(c.total_seconds() / 60)
en este casoDesde Python 2.7 existe el método timedelta.total_seconds (). Entonces, para obtener los milisegundos transcurridos:
fuente
Es posible que desee utilizar el módulo timeit en su lugar.
fuente
También puedes usar:
O podría usar los perfiladores de python .
fuente
start = time.clock()
imprimeDeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
.Sé que es tarde, pero en realidad me gusta mucho usar:
time.time()
te da segundos desde la época. Debido a que este es un tiempo estandarizado en segundos, simplemente puede restar el tiempo de inicio del tiempo de finalización para obtener el tiempo de proceso (en segundos).time.clock()
es bueno para la evaluación comparativa, pero me ha parecido inútil si quieres saber cuánto tiempo llevó tu proceso. Por ejemplo, es mucho más intuitivo decir "mi proceso toma 10 segundos" que decir "mi proceso toma 10 unidades de reloj del procesador"En el primer ejemplo anterior, se le muestra un tiempo de 0.05 para time.clock () frente a 0.06377 para time.time ()
En el segundo ejemplo, de alguna manera el tiempo del procesador muestra "0" aunque el proceso durmió por un segundo.
time.time()
muestra correctamente un poco más de 1 segundo.fuente
import time
declaraciónEl siguiente código debe mostrar la hora detla ...
fuente
Simplemente podría imprimir la diferencia:
fuente
No soy un programador de Python, pero sí sé cómo usar Google y esto es lo que encontré: usa el operador "-". Para completar su código:
Además, parece que puede usar la función strftime () para formatear el cálculo del intervalo de tiempo para representar el tiempo, pero lo hace feliz.
fuente
time.time () / datetime es bueno para un uso rápido, pero no siempre es 100% preciso. Por esa razón, me gusta usar uno de los perfiladores std lib (especialmente hotshot) para averiguar qué es qué.
fuente
Es posible que desee ver en 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.
fuente
Aquí hay una función personalizada que imita las funciones de Matlab / Octave
tic
toc
.Ejemplo de uso:
Función:
fuente
Puede usar timeit como este para probar un script llamado module.py
fuente
Flecha: mejores fechas y horas para Python
fuente