Seite 1 von 1

Erklärung zu time.monotonic()

Verfasst: Dienstag 2. Januar 2024, 16:47
von kiaralle
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

Re: Erklärung zu time.monotonic()

Verfasst: Dienstag 2. Januar 2024, 16:53
von kiaralle
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))

Re: Erklärung zu time.monotonic()

Verfasst: Dienstag 2. Januar 2024, 17:01
von __deets__
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.

Re: Erklärung zu time.monotonic()

Verfasst: Dienstag 2. Januar 2024, 17:11
von noisefloor
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

Re: Erklärung zu time.monotonic()

Verfasst: Dienstag 2. Januar 2024, 20:19
von kiaralle
Ok, Danke,

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

Ralf :wink: