Zeit mit Python messen - time.ticks_ms() und time.ticks_us() vs. time.time()

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
lagerschaden
User
Beiträge: 13
Registriert: Samstag 21. Oktober 2017, 11:34

in Micropython gibt es eine clevere Funktion: time.ticks_ms() bzw time.ticks_us(), damit kann man wunderbar die Zeit zwischen zwei Ereignissen messen https://docs.micropython.org/en/latest/ ... /time.html

Im "normalen" Python gibt es das nicht, time.time() ist kein gleichwertiger Ersatz, denn time.time() liefert fehlerhafte Ergebnisse, wenn zwischen den Ereignissen die Zeit nachreguliert wird, z.B. per NTP oder der Winterzeit-/Sommerzeit -Umstellung.

Gibt es im "normalen" Python, wie es z.B. auf dem RaspberryPi / OrangePi /BananaPi etc. läuft, etwas vergleichbares?

L.S.
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Man verwendet zur Zeitmessung time.monotonic().
lagerschaden
User
Beiträge: 13
Registriert: Samstag 21. Oktober 2017, 11:34

time.monotonic() und time.monotonic_ns() sehen gut aus, die werde ich mal testen.

Danke.
L.S.
lagerschaden
User
Beiträge: 13
Registriert: Samstag 21. Oktober 2017, 11:34

time.monotonic() sind offensichtlich die Sekunden seit dem Start des Rechners (statt seit dem 01.01.1070 wie bei time.time()), das werde ich gleich mal bei der Zeitumstellung in 1 Woche auf diversen Rechnern testen.

L.S:
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

@lagerschaden: Nicht ganz. Laut Dokumentation ist "time.monotonic()" undefiniert. Es ist nicht relevant, wie eine Implementation das letztendlich löst. Relevant ist ausschließlich, dass garantiert ist, dass die Differenz zwischen zwei Aufrufen immer fortlaufend und unabhängig von der Systemuhr ist.
Antworten