Maison  >  Article  >  développement back-end  >  Points à prendre en compte lors de l'utilisation de verrous dans les threads Python

Points à prendre en compte lors de l'utilisation de verrous dans les threads Python

不言
不言original
2018-09-11 16:42:341571parcourir

Le contenu de cet article concerne ce à quoi vous devez faire attention lorsque vous utilisez des verrous dans les threads Python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Lorsque vous utilisez des primitives de verrouillage telles que Lock, RLock et Semphore, vous devez être plus prudent. L'utilisation incorrecte des verrous peut facilement conduire à une impasse ou à une concurrence. Le code qui repose sur des verrous doit garantir que le verrou peut être libéré normalement lorsqu'une exception se produit.

Le code typique est le suivant :

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

De plus, tous les types de verrous prennent également en charge les protocoles de gestion de contexte (plus concis à écrire) :

L'instruction with automatiquement acquiert le verrou et le verrou est automatiquement libéré lorsque le flux de contrôle quitte le contexte.

with lock:
    #关键部分
    ...

De plus, lors de l'écriture de code, vous devez généralement éviter d'acquérir plusieurs verrous en même temps. Par exemple, ce qui suit doit être évité autant que possible :

Cette notification est. très uniforme et conduit à des blocages mystérieux dans l'application, bien qu'elle ne soit pas centralisée. Les stratégies peuvent éviter cette situation (comme le verrouillage hiérarchique), mais il est préférable d'éviter de tels verrous imbriqués lors de l'écriture du code.

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

Bien qu'il soit possible d'écrire des programmes multithread très traditionnels en Python en utilisant diverses combinaisons de verrous et de primitives de synchronisation, il existe une méthode de programmation primordiale qui l'emporte sur toutes les autres : les programmes multithread sont organisés en un. collection de plusieurs tâches indépendantes, et ces tâches communiquent via des files d'attente de messages, telles que le module de file d'attente décrit ci-dessous.

Recommandations associées :

Exemples pour expliquer l'utilisation des verrous de thread dans la programmation Python

Comment utiliser les verrous de thread Python (exemple d'analyse)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn