ich beschäftige mich gerade ein bisschen mit Threads und habe ein kleines Verständnisproblem bezüglich der Kommunikation untereinander.
Afaik unterhalten sich Threads ja nicht untereinander, und ich benötige quasi einen Controller der das starten / stoppen steuert.
Beispiel: Ein Thread führt eine Berechnung durch und in der Zwischenzeit soll in einer Textbox Punkte erzeugt werden.
Mein Ansatz:
Ein Thread für die Berechnung
Code: Alles auswählen
class Berechnung(threading.Thread):
def __init__(self):
threading.Thread.__init__(self):
self.running = True
def run(self):
for i in range(10):
time.sleep(1) # oder was auch immer
self.running = False
Code: Alles auswählen
class Punkt(threading.Thread):
def __init__(self):
threading.Thread.__init__(self):
self.running = True
def run(self):
while self.running:
wx.CallAfter(Publisher().sendMessage("zeichne",1)) #Veränderung der GUI innerhalb des Threads verboten
Code: Alles auswählen
go = Berechnung()
go.start()
go2 = Punkt()
go2.start()
Publisher().subscribe(self.drawpoint,"zeichne")
Eine Idee wäre, eine Controller-Funktion, welche am Ende des Berechnungsthreads mittels CallAfter aufgerufen wird - nur kann diese Funktion dann wieder nicht auf den Punkte-Thread zugreifen.
Also die Controller-Funktion direkt beide Threads starten und verwalten lassen?!
Oder ist der Ansatz total verkehrt und es gibt noch eine wesentlich elegantere Möglichkeit?
Danke schonmal
Gruß
Steffen