Cet article vous présente une introduction aux sémaphores et aux sémaphores limités sous les threads Python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Le sémaphore est une primitive de synchronisation basée sur un compteur. Chaque fois que la méthode acquire() est appelée, le compteur est décrémenté de 1, et chaque fois que release() est appelée. ), ce compteur est incrémenté de 1. Si le compteur est 0, la méthode acquire() se bloquera jusqu'à ce qu'un autre thread appelle la méthode release().
s=Semqphore(value)
Créer un nouveau sémaphore. value est la valeur initiale du compteur. Si la valeur est omise, elle sera définie sur 1 par défaut
s.acquire(blocking) : récupère le sémaphore. Si le compteur interne est supérieur à 0, cette méthode décrémentera sa valeur de 1.
Alors revenez immédiatement. Si sa valeur est 0, cette méthode se bloque jusqu'à ce qu'un autre thread appelle la méthode release().
Le paramètre de blocage se comporte comme décrit pour les objets Lock et RLock.
s.release() : Libère un sémaphore en ajoutant 1 au compteur interne.
Si le compteur est à 0 et qu'un autre thread est en attente, le thread sera réveillé.
Si plusieurs threads sont en attente, un seul peut être renvoyé par son appel acquire() et l'ordre n'est pas défini.
bs=BoundedSemaphore(value)
Crée un nouveau sémaphore délimité. value est la valeur initiale du compteur. Si elle est omise, elle sera par défaut 1.
BoundedSemaphore fonctionne exactement de la même manière que Semaphore, mais release( ) Le nombre d'opérations ne peut pas dépasser le nombre d'opérations acquire().
Les sémaphores peuvent être utilisés pour envoyer des signaux. Par exemple, les méthodes acquire() et release() peuvent être appelées à partir de différents threads pour communiquer entre les threads producteur et consommateur.
Recommandations associées :
Explication détaillée de l'utilisation des sémaphores dans les threads Python3.X
Sémaphore python Qu'est-ce que c'est ? (exemples détaillés)
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!