
carpintero mate
Estoy buscando un equivalente a GetTickCount()
en Linux.
Actualmente estoy usando Python time.time()
que presumiblemente llama a través de gettimeofday()
. Mi preocupación es que la hora devuelta (la época de Unix) puede cambiar de forma errática si se altera el reloj, como por ejemplo con NTP. Un simple proceso o tiempo de pared del sistema, que solo aumenta positivamente a una tasa constante, sería suficiente.
¿Existe tal función de tiempo en C o Python?

nos
Puedes usar RELOJ_MONOTÓNICO por ejemplo en C:
struct timespec ts;
if(clock_gettime(CLOCK_MONOTONIC,&ts) != 0) {
//error
}
Consulte esta pregunta para conocer una forma de Python: ¿cómo obtengo duraciones de tiempo monótonas en Python?

pinguinoapricotman
Esto parece funcionar:
#include <unistd.h>
#include <time.h>
uint32_t getTick() {
struct timespec ts;
unsigned theTick = 0U;
clock_gettime( CLOCK_REALTIME, &ts );
theTick = ts.tv_nsec / 1000000;
theTick += ts.tv_sec * 1000;
return theTick;
}
sí, get_tick() es la columna vertebral de mis aplicaciones. Consta de una máquina de estado para cada ‘tarea’, por ejemplo, puede realizar múltiples tareas sin usar subprocesos y comunicación entre procesos. Puede implementar retrasos sin bloqueo.
Deberías usar: clock_gettime(CLOCK_MONOTONIC, &tp);
. Esta llamada no se ve afectada por el ajuste de la hora del sistema al igual que GetTickCount() en Windows.
Sí, el núcleo tiene temporizadores de alta resolución, pero es diferente. Recomendaría que consulte las fuentes de cualquier proyecto extraño que envuelva esto de manera portátil.
Desde C/C++ normalmente #ifdef
esto y uso gettimeofday()
en Linux, lo que me da una resolución de microsegundos. A menudo agrego esto como una fracción a los segundos desde la época en que también recibo, lo que me da un doble.
relacionado: ¿Cómo obtengo duraciones de tiempo monótonas en python?
– jfs
18 de enero de 2015 a las 10:59