Hallo Python-Gemeinde,
leichtsinnigerweise habe ich ein Programm mit Threading geschrieben.
Nun habe ich das Problem, dass ich wissen muss, ob der Thread
erfolgreich abgearbeitet wurde oder nicht.
Ist es möglich einen Rückgabewert (Return) von dem einzelnen
Thread zu erhalten und wenn ja, wie.
Ich starte einen Thread mittels "start" und warte auf dessen Beendigung
mittels "join".
Danke für Tips.
Volker
Returncodes aus Threads
Hey,
folgenden Beispielcode:
Als Rückgabewert kannst du jeden beliebigen Wert nehmen.
greets george
folgenden Beispielcode:
Code: Alles auswählen
import threading
import time
class TestThread:
def RunThread(self):
objThread = mdlThread()
print objThread.GetSuccessful()
objThread.start()
objThread.join()
print objThread.GetSuccessful()
del(objThread)
class mdlThread(threading.Thread):
def __init__(self):
self.__boolOk = False
#Thread start
threading.Thread.__init__(self)
def GetSuccessful(self):
return self.__boolOk
def run(self):
time.sleep(5)
self.__boolOk = True
if __name__ == "__main__":
objTest = TestThread()
objTest.RunThread()
greets george
Das ist ein bisschen umständlich. Warum eine extra Klasse zum Testen? Das entfernen des Namens `objThread` mittels ``del`` ist überflüssig, der ist lokal zur Methode und würde sowieso gleich nach der Zeile verschwinden. Und das Ergebnis kann man auch direkt als Attribut zur Verfügung stellen, das gehört schliesslich zur API des Objekts.
Hey BlackJack,
greets george
Da gebe ich dir recht. Da "objThread" lokal in der Funktion deklariert wurde, wird er nach Abbarbeitung der Funktion nicht mehr referenziert und automatisch "aufgeräumt".Das entfernen des Namens `objThread` mittels ``del`` ist überflüssig, der ist lokal zur Methode und würde sowieso gleich nach der Zeile verschwinden.
Auch damit hast du recht. Ich habe mir aber angewöhnt, Klassenattribute zu kapseln und diese mit Get/Set zu bearbeiten.Und das Ergebnis kann man auch direkt als Attribut zur Verfügung stellen, das gehört schliesslich zur API des Objekts.
greets george
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Mmh.george hat geschrieben:aIch habe mir aber angewöhnt, Klassenattribute zu kapseln und diese mit Get/Set zu bearbeiten.
Weiterlesen: http://dirtsimple.org/2004/12/python-is-not-java.htmlGetters and setters are evil. Evil, evil, I say! Python objects are not Java beans. Do not write getters and setters. This is what the 'property' built-in is for [...]