Maison  >  Article  >  développement back-end  >  Une brève introduction aux objets Timer, Lock et Rlock sous les threads Python

Une brève introduction aux objets Timer, Lock et Rlock sous les threads Python

不言
不言original
2018-09-11 16:38:341778parcourir

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.

Objet Timer, objet Lock, objet Rlock

Objet Timer

L'objet Timer est utilisé pour exécuter une fonction ultérieurement.

Syntaxe :
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().

Méthodes courantes :

t.start() : Démarrez le chronomètre.
t.cancal() : Si la fonction n'a pas été exécutée, annulez le timer.

Objet de verrouillage

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.

Syntaxe :
lock=Lock()

Créez un nouvel objet Lock, l'état initial est déverrouillé.

Méthodes courantes :

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é.

Objet Rlock

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é.

Syntaxe :
rlock=RLock()

Crée un nouvel objet de verrouillage réentrant.

Méthodes courantes :

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!

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