In diesem Artikel wird hauptsächlich die Verwendung von Ereignisobjekten in der Python-Programmierung vorgestellt und die Rolle und Verwendung von Ereignisobjekten in der Thread-Kommunikation anhand von Beispielen analysiert.
Die Beispiele in In diesem Artikel wird die Verwendung von Ereignisobjekten in der Python-Programmierung beschrieben. Teilen Sie es als Referenz mit allen:
Python stellt das Ereignisobjekt für die Kommunikation zwischen Threads bereit. Es handelt sich um ein vom Thread gesetztes Signalflag Thread wartet, bis das Signal von anderen Threads weitergegeben wird. Dies scheint genau das Gegenteil von Windows-Ereignissen zu sein. Das Event-Objekt implementiert einen einfachen Thread-Kommunikationsmechanismus. Es stellt Einstellungssignale, Löschsignale, Wartesignale usw. bereit, um die Kommunikation zwischen Threads zu realisieren.
1. Signal setzen
Verwenden Sie die set()-Methode von Event, um das Signal-Flag im Event-Objekt auf true zu setzen. Das Event-Objekt stellt die Methode isSet() bereit, um den Status seines internen Signalflags zu bestimmen. Wenn die Methode set() des Event-Objekts verwendet wird, gibt die Methode isSet() true zurück.
2 . Löschen Sie das Signal
Verwenden Sie die Clear()-Methode des Event-Objekts, um das Signal-Flag im Event-Objekt zu löschen, d. h. auf „false“ zu setzen, wenn die Clear-Methode des Events verwendet wird , die isSet()-Methode gibt false zurück
Warten
Die Wartemethode des Event-Objekts wird schnell ausgeführt und schließt die Rückgabe nur ab, wenn das interne Signal wahr ist . Wenn das interne Signalflag des Event-Objekts falsch ist, wartet die Wartemethode, bis es wahr ist, bevor sie zurückkehrt.
Sie können Event verwenden, um den Arbeitsthread ordnungsgemäß beenden zu können. Der Beispielcode lautet wie folgt:
# make thread exit nicely class MyThread9(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): global event while True: if event.isSet(): logging.warning(self.getName() + " is Running") time.sleep(2) else: logging.warning(self.getName() + " stopped") break; event = threading.Event() event.set() def Test9(): t1=[] for i in range(6): t1.append(MyThread9()) for i in t1: i.start() time.sleep(10) q =raw_input("Please input exit:") if q=="q": event.clear() if __name__=='__main__': Test9()
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für die Verwendung von Ereignisobjekten in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!