threading Fragen

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
meldron
User
Beiträge: 3
Registriert: Samstag 7. August 2004, 22:15
Kontaktdaten:

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
Beyond
User
Beiträge: 227
Registriert: Freitag 6. September 2002, 19:06
Kontaktdaten:

Das "Queue" Module!

cu beyond
meldron
User
Beiträge: 3
Registriert: Samstag 7. August 2004, 22:15
Kontaktdaten:

Konnte mir da vielleicht jemand ein kurzes Beispiel schreiben? Die Dokumentation zu Queue ist etwas schwach.
intruder0815

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.

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)
Hoffentlich kannst du damit was anfangen.

Gruß
Christian
Antworten