Ich habe viele Python-Skripte gesehen, die Threads in einer Klasse verwenden und viele von ihnen verwenden die threading.Event()
. Zum Beispiel:Python Threading mit Event-Objekt
class TimerClass(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.event = threading.Event()
def run(self):
while not self.event.is_set():
print "something"
self.event.wait(120)
In while
Schleife, warum überprüfen sie den Zustand, wenn sie nicht self.event
gesetzt?
Im Beispiel von OP bedeutet das self.event.wait (120), dass es 120 Sekunden wartet, um die Schleife wiederherzustellen, außer das Ereignis wird gesetzt(), bevor diese 120 Sekunden abgelaufen sind, an diesem Punkt selbs.event. Warten (120) wird zurückgegeben, und im Grunde wird die Schleife beendet, ohne erneut zu drucken? Und wenn das Ereignis nie eingestellt wird(), wird nur "etwas" alles 120 Sekunden gedruckt? – gunit
@gunit Es wird alle 120 Sekunden "etwas" gedruckt, bis das Ereignis eingestellt ist. Wenn das Ereignis eingestellt ist, wird die Schleife beendet. –