Heim > Artikel > Backend-Entwicklung > Einführung in Semaphore und begrenzte Semaphore unter Python-Threads
Dieser Artikel bietet Ihnen eine Einführung in Semaphore und begrenzte Semaphore unter Python-Threads. Ich hoffe, dass er für Freunde hilfreich ist.
Semaphor ist ein zählerbasiertes Synchronisationsprimitiv. Bei jedem Aufruf der Methode „acquire()“ wird der Zähler um 1 verringert, und bei jedem Aufruf von „release()“ wird der Zähler um 1 verringert )-Methode wird dieser Zähler um 1 erhöht. Wenn der Zähler 0 ist, blockiert die acquire()-Methode, bis ein anderer Thread die release()-Methode aufruft.
s=Semqphore(value)
Erstellen Sie ein neues Semaphor. value ist der Anfangswert des Zählers. Wenn der Wert weggelassen wird, wird er standardmäßig auf 1 gesetzt
s.acquire(blocking): Semaphor abrufen. Wenn der interne Zähler größer als 0 ist, verringert diese Methode seinen Wert um 1.
Dann kehren Sie sofort zurück. Wenn der Wert 0 ist, blockiert diese Methode, bis ein anderer Thread die Methode release() aufruft.
Der Blockierungsparameter verhält sich wie für Lock- und RLock-Objekte beschrieben.
s.release(): Gibt ein Semaphor frei, indem 1 zum internen Zähler addiert wird.
Wenn der Zähler 0 ist und ein anderer Thread wartet, wird der Thread geweckt.
Wenn mehrere Threads warten, kann nur einer von seinem acquire()-Aufruf zurückgegeben werden und die Reihenfolge ist undefiniert.
bs=BoundedSemaphore(value)
Erstellt ein neues begrenztes Semaphor. value ist der Anfangswert des Zählers. Wenn er weggelassen wird, wird er standardmäßig auf 1 gesetzt.
BoundedSemaphore funktioniert genauso wie Semaphore, aber release( ) Die Anzahl der Operationen darf die Anzahl der acquire()-Operationen nicht überschreiten.
Semaphoren können zum Senden von Signalen verwendet werden. Beispielsweise können die Methoden „acquire()“ und „release()“ von verschiedenen Threads aufgerufen werden, um zwischen den Producer- und Consumer-Threads zu kommunizieren.
Verwandte Empfehlungen:
Detaillierte Erläuterung der Verwendung von Semaphoren in Python3.X-Threads
Python-Semaphor Was ist das? ? (ausführliche Beispiele)
Das obige ist der detaillierte Inhalt vonEinführung in Semaphore und begrenzte Semaphore unter Python-Threads. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!