Im folgenden Artikel erfahren wir, was Semaphor (Semaphor) in Python ist. Erfahren Sie mehr über Python-Semaphoren und welche Rolle Semaphore in der Python-Programmierung spielen können.
Semaphore (Semaphore)
Der Mutex erlaubt nur einem Thread, Daten gleichzeitig zu ändern, während Semaphore einer bestimmten Anzahl von Threads erlaubt, Daten gleichzeitig zu ändern Zum Beispiel hat die Toilette 3. Was für eine Grube, es dürfen höchstens 3 Personen auf die Toilette gehen, und die Leute dahinter können erst hineingehen, nachdem jemand herausgekommen ist.
import threading,time def run(n): semaphore.acquire() time.sleep(1) print("run the thread: %s\n" %n) semaphore.release() if __name__ == '__main__': num= 0 semaphore = threading.BoundedSemaphore(5) #最多允许5个线程同时运行 for i in range(20): t = threading.Thread(target=run,args=(i,)) t.start() while threading.active_count() != 1: pass #print threading.active_count() else: print('----all threads done---') print(num)
Ereignisse für die Kommunikation zwischen Threads
Python stellt das Ereignisobjekt für die Kommunikation zwischen Threads bereit Signal-Flag ist Wenn true, warten andere Threads, bis das Signal berührt wird.
Das Event-Objekt implementiert einen einfachen Thread-Kommunikationsmechanismus. Es stellt Einstellungssignale, Löschsignale, Wartesignale usw. bereit, um die Kommunikation zwischen Threads zu realisieren.
Verwendung von Ereignissen
event = threading.Event()
event.wait( )
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.
event.set()
Verwenden Sie die set()-Methode von Event, um das Signalflag im Event-Objekt auf true zu setzen. Das Event-Objekt stellt die Methode isSet() bereit, um den Status seiner internen Signalflags zu bestimmen. Bei Verwendung der set()-Methode des Ereignisobjekts gibt die isSet()-Methode true zurück
event.clear()
Mit der Event-Objekt Die Methode „clear()“ kann das Signalflag im Event-Objekt löschen, d. h. auf „false“ setzen. Wenn die Methode „clear“ von Event verwendet wird, gibt die Methode „isSet()“ false zurück.
Der gesamte Inhalt dieses Artikels stellt hauptsächlich das relevante Wissen überPythonSemaphore (Semaphor) vor. Ich hoffe, dass das, was ich in diesem Artikel beschrieben habe, für Sie hilfreich ist und Ihnen das Erlernen von Python erleichtert.
Weitere Informationen zu diesem Thema finden Sie in der SpaltePython-Tutorial auf der chinesischen PHP-Website.
Das obige ist der detaillierte Inhalt vonWas ist Python-Semaphor (Semaphor)? (ausführliche Beispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!