Erklärung zu time.monotonic()

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
kiaralle
User
Beiträge: 86
Registriert: Donnerstag 19. August 2021, 19:11

Hallo,
ich wurde darauf hingewiesen, das ich time.monotonic() für die Messung der Zeitdauer meines Skriptes verwenden sollte.
Also kurz nachgelesen, etwas schlauer geworden aber nicht so ganz.
Mit dem Skript unten habe ich mal die Uhr anzeigen lassen.
Gestern ist sie ,bei 0.9..... eingeschlafen. Gibt es Gründe?
Hab es im Spyder aber oft unterbrochen bzw abgewürgt und neu gestartet.

Code: Alles auswählen

import time

while True:
    test = time.monotonic()
    print(test)
Heute startet es bei 2322.897356516
Was sagt dieser Timer eigentlich aus?
Ab wann startet der bei 0?

Gruß Ralf
kiaralle
User
Beiträge: 86
Registriert: Donnerstag 19. August 2021, 19:11

Meine andere Version läuft ja auch.

Code: Alles auswählen

import time

test = 0

while True:
    test = time.monotonic()
    time.sleep(1)
    test_1 = time.monotonic()
    
    print(str(test_1 - test))
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der startet wo er will. Gerne zb beim System Start ab 0, aber muss er nicht, kann auch anders implementiert sein.

Warum muss dich das kümmern? Der einzig sinnvolle Zeck ist eine Differenzbildung. Da kürzt sich ein beliebiger startpunkt eh raus.
Benutzeravatar
noisefloor
User
Beiträge: 3882
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

der Timer an sich sagt gar nichts aus. Zitat aus der Python-Doku: "The reference point of the returned value is undefined, so that only the difference between the results of two calls is valid.".

Wie __deets__ schon sagt: das Delta zwischen zwei Werten ist relevant, der absolute Wert ist egal.

`time.monotonic()` läuft halt, wie in der Python-Doku auch steht, immer vorwärts. Bei `time.time()` ist das nicht garantiert. D.h. wenn man einen sicheren, zeitbasierten Zähler braucht nimmt man `time.monotonic()`.

Gruß, noisefloor
kiaralle
User
Beiträge: 86
Registriert: Donnerstag 19. August 2021, 19:11

Ok, Danke,

dann ist alles geklärt. Damit kann ich jetzt einiges umsetzten.

Ralf :wink:
Antworten