Hi,
ich habe hier jetzt schon öffters gelesen das man durch die Events den Timer weglassen könne. Das wäre natürlich ideal allerdings kann ich bis jetzt nicht herrausfinden wie das gehen soll.
Mein Beispiel:
Ich habe ein Hauptprogramm das im Moment einen Timer hat und einen Thread der für den Socket zuständig ist. Jetzt will ich vom Hauptprogramm natürlich immer senden können ohne das die GUI (wxPython) blockiert und ich will möglichst schnell auf Antworten reagieren. Ich verwende hierfür 2 Queue Objekte eine für rein eins für raus.
Also habe ich einen Timer der das ganze alle Sekunde (das genügt in unserem Beispiel) überprüft. So jetzt hätte ich gerne das ich vom Thread aus einen Impuls an die Gui schicken kann das sich was verändert hat. Also im Grunde einen Event. Aber so wie ich die Thread Events verstanden habe kann man die nur abfragen und bekommt nicht wirklich einen zurück, also habe ich ja nichts gewonnen da ich wieder einen Timer brauche der den abfrägt.
Oder bin ich einfach gerade verwirrt?
vielen Dank
wdsl
Threading und Events ohne Timer
Ich glaube du bist verwirrt 
Du musst einen weiteren Thread laufen lassen, der das Abwarten auf den Event übernimmt, und sich dann bei der GUI meldet:
Der Thread der die Daten vom Thread empfängt muss dann nur noch den Event setzen. Wenn du aber eh Daten hin und her schieben willst, kannst du threading.Event auch durch Queue.Queue ersetzen.[/code]

Du musst einen weiteren Thread laufen lassen, der das Abwarten auf den Event übernimmt, und sich dann bei der GUI meldet:
Code: Alles auswählen
import threading
event = threading.Event()
def gui_thread(...):
while True:
#so lange warten, bis ein Ereignis aufgetreten ist
event.wait()
#Hier dann die GUI benachrichtigen
#Und das Ereignis zurücksetzen
event.clear()
nur das ich das richtig verstanden habe.
an
Übergebe ich dann das GUI objekt damit es dort bekannt ist mir ist gerade nicht klar wie ich die GUI benachrichtigen kann ohne das Objekt direkt zu kennen.
vielen Dank
wdsl
an
Code: Alles auswählen
def gui_thread(...):
vielen Dank
wdsl
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo wdsl!wdsl hat geschrieben:ich habe hier jetzt schon öffters gelesen das man durch die Events den Timer weglassen könne.
Vielleicht kannst du mit diesen Beispielen etwas anfangen:
- http://www.python-forum.de/post-68183.html
- http://www.python-forum.de/topic-10704.html
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.