Dans l'article suivant, nous découvrirons ce qu'est le sémaphore (sémaphore) en python. Découvrez les sémaphores Python et le rôle que le sémaphore peut jouer dans la programmation Python.
Sémaphore (Sémaphore)
Le mutex permet à un seul thread de modifier les données en même temps, tandis que le Sémaphore permet à un certain nombre de threads de modifier les données en même temps Par exemple, les toilettes ont 3 Quelle fosse, seulement 3 personnes sont autorisées à aller aux toilettes au maximum, et les personnes derrière ne peuvent entrer qu'après que quelqu'un soit sorti.
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)
Communication inter-thread d'événements
Python fournit l'objet Event pour la communication inter-thread. Il s'agit d'un indicateur de signal défini par le thread. Si le signal Si l'indicateur est vrai, les autres threads attendent que le signal soit touché.
L'objet Event implémente un mécanisme de communication de thread simple. Il fournit des signaux de configuration, d'effacement, d'attente, etc. pour réaliser la communication entre les threads.
Utilisation des événements
event = threading.Event()
event.wait( )
La méthode d'attente de l'objet Event s'exécutera rapidement et terminera le retour uniquement lorsque le signal interne est vrai. Lorsque l'indicateur de signal interne de l'objet Event est faux, la méthode wait attend qu'il soit vrai avant de revenir.
event.set()
Utilisez la méthode set() de Event pour définir l'indicateur de signal à l'intérieur de l'objet Event sur true. L'objet Event fournit la méthode isSet() pour déterminer l'état de ses indicateurs de signal internes. Lors de l'utilisation de la méthode set() de l'objet événement, la méthode isSet() renvoie true
event.clear()
En utilisant le Objet Event La méthode clear() peut effacer l'indicateur de signal à l'intérieur de l'objet Event, c'est-à-dire le définir sur false Lorsque la méthode clear de Event est utilisée, la méthode isSet() renvoie false .
Ce qui précède est tout le contenu de cet article. Cet article présente principalement les connaissances pertinentes de pythonSemaphore (sémaphore). J'espère que ce que j'ai décrit dans cet article vous sera utile et vous facilitera l'apprentissage de Python.
Pour plus de connaissances connexes, veuillez visiter la colonne Tutoriel Python du site Web php chinois.
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!