ich hab wie der Titel schon verrät ein Problem mit nem Timer.
Nun zum Code:
Code: Alles auswählen
import time
from decimal import Decimal, _Zero, _One
def create_timer(interval):
get_cur_time = lambda: Decimal(str(time.time()))
sleep = lambda x: (time.sleep(x) if x > _Zero else None)
last_time = _Zero
i = 0
while 1:
sleep(last_time + interval - get_cur_time())
last_time = get_cur_time()
yield i
i += 1
def hz_to_interval(hz):
return _One / Decimal(str(hz))
if __name__ == "__main__":
interval = hz_to_interval(600)
last = 0
t1 = time.time()
for i in create_timer(interval):
if t1 + 1. < time.time():
print i - last, time.ctime()
last = i
t1 = time.time()
Code: Alles auswählen
794 Fri Jan 22 20:56:55 2010
802 Fri Jan 22 20:56:56 2010
801 Fri Jan 22 20:56:57 2010
801 Fri Jan 22 20:56:58 2010
801 Fri Jan 22 20:56:59 2010
801 Fri Jan 22 20:57:00 2010
801 Fri Jan 22 20:57:01 2010
802 Fri Jan 22 20:57:02 2010
801 Fri Jan 22 20:57:03 2010
801 Fri Jan 22 20:57:04 2010
801 Fri Jan 22 20:57:05 2010
801 Fri Jan 22 20:57:06 2010
801 Fri Jan 22 20:57:07 2010
802 Fri Jan 22 20:57:08 2010
801 Fri Jan 22 20:57:09 2010
802 Fri Jan 22 20:57:10 2010
801 Fri Jan 22 20:57:11 2010
801 Fri Jan 22 20:57:12 2010
...
Wenn ich statt den 600Hz (Zeile 20) andere Zahlen nehme, nähern sich die Iterationen / Sekunde anderen Werten:
170 -> 200
450 -> 400
Bloß wieso?
Vielen dank schonmal im voraus
edit: Es sind auch Verbesserungsvorschläge etc. erwünscht