Seite 1 von 1

time.sleep(delay) abbrechen

Verfasst: Montag 6. April 2009, 09:52
von wuf
Hallo Forumfreunde

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

Gruss wuf :wink:

Verfasst: Montag 6. April 2009, 10:10
von EyDu
Dann willst du sicher "Event" aus dem threading-Modul.

Re: time.sleep(delay) abbrechen

Verfasst: Montag 6. April 2009, 10:15
von gerold
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
:-)

Verfasst: Montag 6. April 2009, 10:50
von wuf
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:

Verfasst: Montag 6. April 2009, 11:37
von numerix
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?

Verfasst: Montag 6. April 2009, 13:13
von wuf
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:

Verfasst: Montag 6. April 2009, 13:35
von numerix
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.