Hallo zusammen,
ich möchte eine Funktion periodisch wiederholen (zum Beispiel jede Sekunde einen Messwert ausgeben) ... unter Matlab, Java usw. gibts dafür Timer-Objekte die man mit einer Periodendauer und der aufzurufenden Funktion versieht und los gehts.
Hat Python was änliches zu bieten?
Grüße und ein schönes Wochenende
Poseidonius
Periodischer Timer
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
-
- User
- Beiträge: 63
- Registriert: Montag 23. Januar 2006, 08:58
Danke für den Hinweis Rebecca,
in der Doku war ich auch schon gelandet, habe aber den threading.Timer() so verstanden, dass man damit lediglich die Funktionsausführung verzögern kann ... ich wollte aber eine fortwährende Ausführung alle n Millisekunden.
Ich habe es jetzt mit einem QtCore.Timer gemacht, analog zu
http://www.mail-archive.com/pyqt@riverb ... 12106.html
Geht es mit threading auch?
Grüße
Poseidonius
in der Doku war ich auch schon gelandet, habe aber den threading.Timer() so verstanden, dass man damit lediglich die Funktionsausführung verzögern kann ... ich wollte aber eine fortwährende Ausführung alle n Millisekunden.
Ich habe es jetzt mit einem QtCore.Timer gemacht, analog zu
http://www.mail-archive.com/pyqt@riverb ... 12106.html
Geht es mit threading auch?
Grüße
Poseidonius
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Im Prinzip reicht es doch aus, einen Thread zu starten und dann zwischen den Auswertungen jeweils ein ``sleep(1.0)`` zu machen.
Gut, der Unterschied ist, die Auswertung wird nicht jede Sekunde, sondern im Sekundenabstand ausgeführt.
Gut, der Unterschied ist, die Auswertung wird nicht jede Sekunde, sondern im Sekundenabstand ausgeführt.
Oder man merkt sich einfach wie lange die Funktion etwa gebraucht hat.
Code: Alles auswählen
import threading, time
class Timer(threading.Thread):
def __init__(self, func, sec=2):
super(Timer, self).__init__()
self.func = func
self.sec = sec
self.running = True
def stop(self):
self.running = False
def run(self):
while self.running:
t = time.time()
self.func()
time_elapsed = time.time()-t
time.sleep(self.sec-time_elapsed if time_elapsed > 0 else 0)
def function():
print 'i'
time.sleep(0.4)
t = Timer(function)
t.start()
time.sleep(10)
t.stop()
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
-
- User
- Beiträge: 63
- Registriert: Montag 23. Januar 2006, 08:58
Danke für Eure Hinweise ! Wieder was gelernt !