Tag zusammen,
beschäftige mich neuerdings mit Threaden, da ich verschiedene Dateien von Webseiten downloaden möchte. Dies mach ich in dem ich jewals einen neuen Thread starte für jede Datei, soweit kein Problem. Nun möchte ich noch das Ergebnis (ob der Download erfolgreich war usw) in eine List einer wxFrame schreiben. Also stellt sich mir die Frage, wie ich Threade mit einander kommunizieren lassen kann?
Regards,
meldron
threading Fragen
Das "Queue" Module!
cu beyond
cu beyond
Konnte mir da vielleicht jemand ein kurzes Beispiel schreiben? Die Dokumentation zu Queue ist etwas schwach.
Hallo meldron,
du könntest das so machen wie in der wxPython Demo unter
dem Punkt Threads.
Du übergibst einfach dem Thread deine wxFrame Instranz und wenn
der Thread fertig ist, macht er einfach einen Eintrag in deine Liste
oder er ruft einen Funktion in deiner GUI Instanz auf.
Ich hab hier ein Beispiel, wo der Thread jede Sekunde die neue
Uhrzeit in die Statusbar eines wxFrame schreibt und die dafür nötigen Paramenter bekommt er übergeben.
Die Klasse ist von einer normalen Thread Implementierung abgeleitet,
da kann ich dir nur empfehlen die Demo wxPython anzuschauen.
Hoffentlich kannst du damit was anfangen.
Gruß
Christian
du könntest das so machen wie in der wxPython Demo unter
dem Punkt Threads.
Du übergibst einfach dem Thread deine wxFrame Instranz und wenn
der Thread fertig ist, macht er einfach einen Eintrag in deine Liste
oder er ruft einen Funktion in deiner GUI Instanz auf.
Ich hab hier ein Beispiel, wo der Thread jede Sekunde die neue
Uhrzeit in die Statusbar eines wxFrame schreibt und die dafür nötigen Paramenter bekommt er übergeben.
Die Klasse ist von einer normalen Thread Implementierung abgeleitet,
da kann ich dir nur empfehlen die Demo wxPython anzuschauen.
Code: Alles auswählen
##
# <br></br>
# class to implement an own clock <br></br>
#
# @param statusbar name of the statusbar
# @param clockfild place where the clock is
# @param sleeptime update interval
#
class ClockThread(TimThread):
def __init__(self, statusbar, clockfield, sleeptime):
TimThread.__init__(self)
self.statusbar = statusbar
self.clockfield = clockfield
self.sleeptime = sleeptime
##
# <br></br>
# start the clock
#
def Run(self):
while self.keepGoing:
self.OnTimer()
time.sleep(self.sleeptime)
self.running = False
##
# <br></br>
# timer to update the current time in the status bar
#
def OnTimer(self):
now = '%s' %wxDateTime_Now().Format("%d-%m-%Y - %H:%M:%S")
self.statusbar.SetStatusText(_(now), self.clockfield)
Gruß
Christian