Heim  >  Artikel  >  Backend-Entwicklung  >  Was Sie bei der Verwendung von Sperren in Python-Threads beachten sollten

Was Sie bei der Verwendung von Sperren in Python-Threads beachten sollten

不言
不言Original
2018-09-11 16:42:341575Durchsuche

Der Inhalt dieses Artikels handelt davon, worauf Sie bei der Verwendung von Sperren in Python-Threads achten sollten. Ich hoffe, dass er für Sie hilfreich ist.

Bei der Verwendung von Sperrprimitiven wie Lock, RLock und Semphore müssen Sie vorsichtiger sein. Die falsche Verwendung von Sperren kann leicht zu Deadlocks oder Konkurrenz führen. Code, der auf Sperren basiert, sollte sicherstellen, dass die Sperre normal aufgehoben werden kann, wenn eine Ausnahme auftritt.

Typischer Code lautet wie folgt:

try:
    lock.acquire()
    #关键部分
    ...
finally:
    lock.release()

Darüber hinaus unterstützen alle Arten von Sperren auch Kontextverwaltungsprotokolle (prägnanter zu schreiben):

Die with-Anweisung erfasst automatisch die sperren und steuern. Die Sperre wird automatisch aufgehoben, wenn der Stream den Kontext verlässt.

with lock:
    #关键部分
    ...

Außerdem sollten Sie beim Schreiben von Code generell vermeiden, mehrere Sperren gleichzeitig zu erwerben. Beispielsweise sollte Folgendes vermieden werden:

Diese Benachrichtigung ist sehr einheitlich und führt zu Rätseln Deadlocks in der Anwendung, obwohl dies mit der zentralisierten Strategie gelöst werden kann. Vermeiden Sie Situationen wie diese (wie hierarchische Sperren), aber es ist am besten, solche verschachtelten Sperren beim Schreiben Ihres Codes zu vermeiden.

with lock_A:
    #关键部分
    ...
    with lock_B:
        #B的关键部分
        ...

Obwohl es möglich ist, in Python sehr traditionelle Multithread-Programme mit verschiedenen Kombinationen von Sperren und Synchronisationsprimitiven zu schreiben, gibt es eine bevorzugte Art der Programmierung, die alle anderen übertrifft: nämlich Multithread-Programme, die in a organisiert sind Bei der Sammlung mehrerer unabhängiger Aufgaben kommunizieren diese Aufgaben über Nachrichtenwarteschlangen, z. B. das unten beschriebene Warteschlangenmodul.

Verwandte Empfehlungen:

Beispiele zur Erläuterung der Verwendung von Thread-Sperren in der Python-Programmierung

So verwenden Sie Python-Thread-Sperren (Beispielanalyse)

Das obige ist der detaillierte Inhalt vonWas Sie bei der Verwendung von Sperren in Python-Threads beachten sollten. 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