Maison >développement back-end >Tutoriel Python >Une brève introduction aux objets Timer, Lock et Rlock sous les threads Python
Cet article vous apporte une brève introduction aux objets Timer, Lock et Rlock sous les threads Python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
L'objet Timer est utilisé pour exécuter une fonction ultérieurement.
t=Timer(interval,func,args,kwargs)
Créez un objet timer et exécutez la fonction func après un intervalle de secondes, args et kwargs fournissent les paramètres et les arguments de mots-clés transmis à func.
Le timer ne peut être démarré qu'après avoir appelé la méthode start().
t.start() : Démarrez le chronomètre.
t.cancal() : Si la fonction n'a pas été exécutée, annulez le timer.
Le verrou d'origine (verrouillage mutex) est une primitive de synchronisation et a deux états : "Verrouillé" et "Déverrouillé".
Si l'état est déjà verrouillé, les tentatives d'acquisition du verrou se bloqueront jusqu'à ce que le verrou soit libéré. Si plusieurs threads attendent d'acquérir le verrou, lorsque le verrou est libéré, un seul thread l'acquiert et l'ordre d'acquisition est incertain.
lock=Lock()
Créez un nouvel objet Lock, l'état initial est déverrouillé.
lock.acquire(blocking) : Acquérir le verrou Si nécessaire, bloquez jusqu'à ce que le verrou soit libéré.
Si le blocage est faux, False sera renvoyé immédiatement lorsque le verrou ne peut pas être acquis, et True sera renvoyé si le verrou est acquis avec succès.
lock.release() : libère un verrou lorsque le verrou est dans un état déverrouillé ou que cette méthode est appelée à partir d'un thread différent du thread qui a initialement appelé la méthode acquire(), une erreur sera générée. signalé.
Un verrou réentrant est une primitive de synchronisation similaire à l'objet Lock, mais le même thread peut l'acquérir plusieurs fois.
Il permet au thread qui possède le verrou d'effectuer des opérations imbriquées acquire() et release(). Dans ce cas, seule l'opération Release() la plus externe peut réinitialiser le verrou à l'état légèrement déverrouillé.
rlock=RLock()
Crée un nouvel objet de verrouillage réentrant.
rlock.acquire(blocking) : Acquérir le verrou Si nécessaire, bloquez jusqu'à ce que le verrou soit libéré.
Si aucun thread ne possède le verrou, il sera verrouillé et le niveau de récursion est défini sur 1.
Si ce thread possède déjà le verrou, le niveau de récursion du verrou est augmenté de 1 et la fonction revient immédiatement.
rlock.release() : Libère le verrou en réduisant son niveau de récursion. Si le niveau de récursion est 0 après décrémentation, le verrou sera réinitialisé à l'état déverrouillé. Sinon, la serrure restera verrouillée.
Cette méthode ne peut être appelée que par le thread qui possède actuellement le verrou.
Recommandations associées :
Tutoriel d'apprentissage de classes et d'objets en programmation orientée objet Python
Python multi- threading Synchroniser les instances de verrouillage, RLock, sémaphore et événement
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!