Seite 1 von 1

time.sleep ?

Verfasst: Dienstag 3. April 2007, 13:00
von blubber
Hi,

eine Frage zu time.sleep()
Kann ich davon ausgehen, dass z.B. ein time.sleep(1) auch wirklich exakt einer Sekunde entspricht? Unabhängig von System und Rechnerleistung? Ist für mich wichtig, weil ich evtl. Messungen im Millisekunden-Bereich machen muss und da sollte das schon genau sein.

Danke
Gruß

Verfasst: Dienstag 3. April 2007, 13:20
von BlackJack
Nein davon kannst Du nicht ausgehen. Wirklich genaue Messungen kannst Du auf einem Multitasking-Betriebssystem sowieso vergessen, da kann Dir immer ein anderer Prozess dazwischenkommen und Zeit "klauen".

Verfasst: Dienstag 3. April 2007, 13:42
von Zap
Hab das aus spass mal durchgespielt

Code: Alles auswählen

>>> def test(sleeptime):
...  start = time()
...  sleep(sleeptime)
...  print "%2.9fs" % (time() - start )
...
>>> test(1)
1.000000000s
>>> test(2)
1.999000072s
>>> test(3)
2.998999834s
>>> test(1)
0.999000072s
>>>
sobald meinem Rechner im Hintergrund irgendwas anderes passiert merkt man schon einige Schwankungen.

Verfasst: Dienstag 3. April 2007, 21:44
von Costi
hier noch ein anderes interesantes beispiel:

Code: Alles auswählen

>>> filter(lambda n: time.time() == time.time(), xrange(100000) )
[18184, 48078, 56372, 70738, 75535, 76731, 80325, 85116]

Echtzeit-OS?

Verfasst: Mittwoch 4. April 2007, 08:51
von Gromit
BlackJack hat geschrieben:Nein davon kannst Du nicht ausgehen. Wirklich genaue Messungen kannst Du auf einem Multitasking-Betriebssystem sowieso vergessen, da kann Dir immer ein anderer Prozess dazwischenkommen und Zeit "klauen".
Gerüchteweise soll es auch sowas wie Echtzeitbetriebssysteme und entsprechende Erweiterungen für Linxu geben.