time.sleep(delay) abbrechen

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
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo Forumfreunde

Der Titel sagt eigentlich schon alles. Gib es eine Möglichkeit ein länger andauerndes time.sleep(delay) abzubrechen?

Gruss wuf :wink:
Take it easy Mates!
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dann willst du sicher "Event" aus dem threading-Modul.
Das Leben ist wie ein Tennisball.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

wuf hat geschrieben:Gib es eine Möglichkeit ein länger andauerndes time.sleep(delay) abzubrechen?
Hallo wuf!

Warte nicht in einem Stück, sondern zerlege den Zeitraum in viele kleine Zeiträume. Prüfe in einer Schleife die Abbruchbedingung.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo zusammen

@EyDu: Ja genau du hast bemerkt mit was ich mich beschäftige. Ich habe an Hand deines Tippes noch im Forum gesucht und bin auf das Beispiel mit dem Schrittmotor von gerold gestossen.

@gerold: Wie du siehst bin ich durch EyDu mit nachträglichem suchen auf deinen sehr interessanten Beitrag unter:
http://www.python-forum.de/post-22681.html#22681
gestossen.

Ich bin gerade am programmieren eines Velo-Radimpuls-Simulators bei dem ich die Geschwindigkeit kontinuierlich ändern möchte. Dafür verwende ich auch ein Thread. Momentan noch unglücklicherweise mit einem time.sleep() in der Schlaufe. Da ich ein time.sleep() nicht sofort beeinflussen kann gibt es eine Verzögerung wenn ich von einer langsamen auf eine viel höhere Geschwindigkeit wechseln möchte. gerold ich werde dein Beitrag noch genauer studieren, speziell in Sicht auf thread.Event. Bei eventuellen Fragen komme ich gerne darauf zurück.

Besten Dank für eure Antworten!

Gruss wuf :wink:
Take it easy Mates!
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

wuf hat geschrieben:Ich bin gerade am programmieren eines Velo-Radimpuls-Simulators bei dem ich die Geschwindigkeit kontinuierlich ändern möchte.
Ich vermute einfach mal, dass das eine Tkinter-Anwendung wird ( :) ) und falls ja: Kannst du nicht die after()-Methode verwenden?
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo numerix

Deine Vermutung mit Tkinter ist richtig. Die Methode after() von Thinker muss man als genial bezeichnen. Da ich mit einem neuen Hardware- und OS-Setup arbeite wurde ich plötzlich des öfteren mit Stack-Overflow Exeptions konfrontiert die bei meinem früheren Setup nicht in dieser Form auftraten. Speziell bei der Kombination von Thread getriebenen Modulen wie 'Socket' mit Tkinter. Ein Beitrag von yipyip, welcher sich auf diese Problematik bezieht gab mir den Anstoss mich näher mit den Module threading und Queue zu beschäftigen. Bei meiner momentanen Aufgabe würde die after()-Methode von Tkinter sicherlich genügen da ich sie schon bei einer früheren ahnlichen Anwendung auf diese Art eingesetzt habe. Aber bei meiner derzeitigen Aufgabe möchte ich, dass ein Tkinter unabhängiger Thread Daten über eine Queue (FIFO) mit der Tkinter abhängigen Methode after() austauscht. Da für mich diese beiden Module noch nicht ganz transparent sind möchte ich damit neue Erfahrungen sammeln.

Danke für den Tipp!

Gruss wuf :wink:
Take it easy Mates!
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

wuf hat geschrieben:Danke für den Tipp!
Naja, ein Tipp war das ja nicht gerade ...

Bekanntlich bist du ein ausgewiesener Kenner von Tkinter und so habe ich mich eigentlich nur gewundert, warum jemand wie du, der mit after() vertraut ist, einen anderen Weg beschreiten will bzw. ob es evtl. eine Problemstellung ist, bei der es gute Gründe gibt, after() nicht zu verwenden.
Antworten