Zeiten kleiner als ne Sekunden

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
gorba
User
Beiträge: 100
Registriert: Freitag 28. Juli 2006, 14:58

Freitag 4. August 2006, 08:40

Hi wider ma ne Frage von mir

Wie bekomme ich zuverlässig Werte von meinem Time Modul die kleiner sind als ne Sekunde? (Milli, mikro?) Bei c gibts ne funktion gettimeofday() aber in Python finde ich im Modul time nix was mir millisekunden liefert.
Und wie genau ist die "Python Uhr"?

greez
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 4. August 2006, 08:52

gorba hat geschrieben:Wie bekomme ich zuverlässig Werte von meinem Time Modul die kleiner sind als ne Sekunde?
Hi gorba!

time.clock() --> das ist so ziemlich das genaueste, was du von Python erwarten kannst. Allerdings gibt clock() nicht die aktuelle Zeit zurück. Nähere Infos stehen in der Hilfe.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
gorba
User
Beiträge: 100
Registriert: Freitag 28. Juli 2006, 14:58

Freitag 4. August 2006, 08:59

clock( )

On Unix, return the current processor time as a floating point number expressed in seconds.

Ok, und wie bekomm ich dann aus den sekunden zuverlässig milli und mikrosekunden werte zurück?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 4. August 2006, 09:22

gorba hat geschrieben:On Unix, return the current processor time as a floating point number expressed in seconds.
Hi gorba!

Das tut mir leid. Ich dachte, dass es unter Unix genau so gut wie unter Windows funktioniert.

Windows 2000 (Python 2.4):

Code: Alles auswählen

>>> import time
>>> time.clock()
7.6834367792383126e-007
>>> time.clock()
2.938073288454687
>>> time.clock()
5.1097167394850835
>>> time.clock()
6.4394377496296578
>>>


Debian (Python 2.4):

Code: Alles auswählen

>>> import time
>>> time.clock()
0.01
>>> time.clock()
0.01
>>> time.clock()
0.01
>>>
Vielleicht finde ich doch noch etwas besseres.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Freitag 4. August 2006, 09:25

Unter Windows nimmt man time.clock(), unter Unix time.time() für möglichst genaue Zeiten.
gorba
User
Beiträge: 100
Registriert: Freitag 28. Juli 2006, 14:58

Freitag 4. August 2006, 09:48

evt. muss ich den Hintergrund erklären.

Habe eine relativ Zeitkritische Applikation, um dies zu vereinfachen, habe ich das eventmodell vergrössert, so das die reaktionszeit jetzt 1 sec ist. Die Frage ist, wie ich meinem Programm nun Leben einhauche, so, dass alle sekunde ein event hervorgerufen wird, der eine Funktion auslöst.

Wisst ihr was ich meine?

edit:

hab das ganze mal so gelöst:

Code: Alles auswählen

try:
	import threading as trd
except ImportError:
	import dummy_threading as trd

def print_time():
	# ACTION whatever u want
	timer_thread()

def timer_thread():
	t = trd.Timer(0.01,  print_time)
	t.start()

try:
	#do want you wanna do

finally:
	print 'exit'
Wie findet ihr die Lösung?
Antworten