Quiero registrar cuánto tiempo lleva algo de tiempo real en la pared. Actualmente estoy haciendo esto:¿Cómo obtengo duraciones de tiempo monótonas en python?
startTime = time.time()
someSQLOrSomething()
print "That took %.3f seconds" % (time.time() - startTime)
Pero eso va a fallar (resultados incorrectos) si el tiempo se ajusta mientras que la consulta SQL (o lo que sea) se está ejecutando.
No quiero solo compararlo. Quiero iniciar sesión en una aplicación en vivo para ver las tendencias en un sistema en vivo.
Quiero algo como clock_gettime (CLOCK_MONOTONIC, ...), pero en Python. Y preferiblemente sin tener que escribir un módulo C que llame a clock_gettime().
Bueno, no se sabe muy bien cómo a menudo está realmente ajustado. Ejecuto NTP. Pero con un reloj mononótico no tendré que tropezar con cosas como el error de Oracle RAC donde reinició el sistema si el tiempo se ajustó al revés. Además de los pequeños ajustes de NTP, hay segundos intercalares que pueden avanzar y retroceder. – Thomas
S.Lott: incorrecto. "Un segundo intercalar es un ajuste positivo o negativo de un segundo [...]". Es trivial mirar hacia arriba. Es la primera frase del artículo "Leap second" en Wikipedia. Entonces, cuando se agrega un segundo intercalado, NTP reajustará el tiempo del sistema hacia atrás (porque su sistema es rápido. No contó 23:59:60), lo que significa que una medición basada en time.time() puede ser negativa. Créanme, muchos servidores Oracle se reiniciaron debido al error que mencioné anteriormente los últimos años. Y acabo de utilizar Oracle como ejemplo donde algunos programas no pueden manejar reajustes de tiempo. – Thomas
No sé por qué (sin parches) Oracle 10 hace eso. Simplemente lo hace, y Oracle (la compañía) lo confirma. – Thomas