17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

454<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Le module threading<br />

Python fournit un module de haut niveau nommé threading, qui masque toute la<br />

complexité de mise en œuvre des threads pour fournir :<br />

une classe Thread pour exécuter du code dans un nouveau thread ;<br />

des utilitaires de protection des ressources partagées ;<br />

une classe Event qui permet aux threads de communiquer entre eux.<br />

La classe Thread permet d’exécuter du code dans un nouveau thread, en passant une<br />

fonction ou une méthode à la construction de l’instance, ou en dérivant la classe pour<br />

implémenter le code de la méthode run(). C’est cette méthode qui est exécutée dans<br />

un thread séparé.<br />

class Thread(group=None, target=None, name=None, args=(), kwargs={})<br />

Le paramètre group n’a aucune utilité actuellement et a été introduit pour une future<br />

implémentation des groupes de threads. target définit une fonction ou méthode qui<br />

est appelée par la méthode run(). name détermine le nom du thread, qui peut être<br />

ensuite lu par la méthode getname(). Ce nom n’a pas d’utilité fonctionnelle mais<br />

peut permettre dans certains cas de différencier simplement plusieurs threads. Enfin,<br />

args et kwargs sont les paramètres passés à target si nécessaire.<br />

start()<br />

Appelée une seule fois, start() permet de lancer un nouveau thread et d’y exécuter<br />

la méthode run().<br />

run()<br />

Méthode exécutée dans le thread. Si target a été fourni, run() l’exécute. Dans le cas<br />

inverse, cette méthode peut être surchargée pour contenir directement le code à exécuter.<br />

Le thread est alive dès que cette méthode est appelée. Lorsque run() est terminé,<br />

soit par la fin de l’exécution, soit par une levée d’exception, le thread est dead.<br />

join([timeout])<br />

Attend que le thread se termine. Cette méthode peut être appelée par un autre<br />

thread qui se met alors en attente de la fin d’exécution du thread. Si timeout est<br />

fourni, c’est un réel qui détermine en secondes le temps d’attente maximum. Passé ce<br />

délai, le thread mis en attente est débloqué.<br />

isAlive()<br />

Informe sur l’état du thread. Renvoie True si la méthode run() est en cours d’exécution.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!