Derzeit verwende ich Python’s time.time() die vermutlich anruft gettimeofday(). Meine Sorge ist, dass sich die zurückgegebene Zeit (die Unix-Epoche) unregelmäßig ändern kann, wenn die Uhr durcheinander gebracht wird, z. B. durch NTP. Eine einfache Prozess- oder Systemwandzeit, die nur mit einer konstanten Rate positiv zunimmt, würde ausreichen.
Gibt es eine solche Zeitfunktion in C oder Python?
verwandt: Wie bekomme ich monotone Zeitdauern in Python?
Siehe diese Frage für einen Python-Weg – Wie bekomme ich monotone Zeitdauern in Python?
Und auf sehr alten Linux-Systemen können Sie /proc/uptime als monotone Zeitquelle verwenden. Klobig aber funktioniert.
– Zan Luchs
3. Juni 2010 um 21:37 Uhr
Es gibt einen Hinweis auf der Manpage: CLOCK_MONOTONIC_RAW (seit Linux 2.6.28; Linux-spezifisch) Ähnlich wie CLOCK_MONOTONIC, bietet aber Zugriff auf eine hardwarebasierte Rohzeit, die keinen NTP-Anpassungen unterliegt. Bedeutet dies das CLOCK_MONOTONIC_RAW ist angemessener?
– Matt Tischler
4. Juni 2010 um 4:20 Uhr
@MattJoiner: Wann CLOCK_MONOTONIC_RAW spricht über NTP-Anpassungen, es bezieht sich auf die Bewertung der Uhr und nicht den absoluten Wert. CLOCK_MONOTONIC wird nicht übersprungen (wie der Name schon sagt) und ist normalerweise die richtige Wahl.
– Café
12. Oktober 2011 um 4:34 Uhr
Es könnte sich lohnen, diese Frage zu CLOCK_MONOTONIC zu überprüfen: stackoverflow.com/questions/3657289/…
ja, get_tick() ist das Rückgrat meiner Anwendungen. Bestehend aus einer Zustandsmaschine für jede „Aufgabe“, zB Multitasking ohne Verwendung von Threads und Kommunikation zwischen Prozessen. Kann nicht blockierende Verzögerungen implementieren.
Du solltest benutzen: clock_gettime(CLOCK_MONOTONIC, &tp);. Dieser Aufruf ist nicht von der Anpassung der Systemzeit betroffen, genau wie GetTickCount() unter Windows.
Ja, der Kernel hat hochauflösende Timer, aber es ist anders. Ich würde empfehlen, dass Sie sich die Quellen jedes seltsamen Projekts ansehen, das dies auf tragbare Weise umschließt.
Von C/C++ habe ich normalerweise #ifdef dies und verwenden gettimeofday() unter Linux, was mir eine Mikrosekundenauflösung gibt. Ich füge dies oft als Bruchteil zu den Sekunden seit der Epoche hinzu, die ich auch erhalte, was mir ein Doppel gibt.
13825400cookie-checkEntspricht GetTickCount() unter Linuxyes
verwandt: Wie bekomme ich monotone Zeitdauern in Python?
– jfs
18. Januar 2015 um 10:59 Uhr