Seite 1 von 1

Zeiten kleiner als ne Sekunden

Verfasst: Freitag 4. August 2006, 08:40
von gorba
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

Re: Zeiten kleiner als ne Sekunden

Verfasst: Freitag 4. August 2006, 08:52
von gerold
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
:-)

Verfasst: Freitag 4. August 2006, 08:59
von gorba
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?

Verfasst: Freitag 4. August 2006, 09:22
von gerold
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
:-)

Verfasst: Freitag 4. August 2006, 09:25
von birkenfeld
Unter Windows nimmt man time.clock(), unter Unix time.time() für möglichst genaue Zeiten.

Verfasst: Freitag 4. August 2006, 09:48
von gorba
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?