Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist Python-Semaphor (Semaphor)? (ausführliche Beispiele)

Was ist Python-Semaphor (Semaphor)? (ausführliche Beispiele)

乌拉乌拉~
乌拉乌拉~Original
2018-08-23 17:42:116611Durchsuche

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 über

PythonSemaphore (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 Spalte

Python-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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn