17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

460<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

isSet()<br />

Renvoie l’état du drapeau.<br />

set()<br />

Passe le drapeau à True. Tous les threads en attente de l’événement sont débloqués.<br />

clear()<br />

Passe le drapeau à False. Tous les threads qui attendent l’évènement seront bloqués.<br />

wait([timeout])<br />

Permet d’attendre l’événement. Si le drapeau est à True, renvoie la main immédiatement.<br />

timeout permet de spécifier un temps en secondes après lequel le thread en attente<br />

est débloqué même si l’événement n’a pas eu lieu. Lorsqu’il n’est pas spécifié, le<br />

thread est bloqué indéfiniment.<br />

La classe Event permet de mettre en œuvre des schémas complexes d’interactions de<br />

threads, où chaque intervenant se réveille sur un événement particulier, exécute du<br />

code et provoque à son tour un événement, avant de se terminer, ou d’attendre à<br />

nouveau un événement.<br />

L’exemple ci-dessous imite une course de relais 4 × 100 mètres où chaque athlète est<br />

représenté par un thread. L’athlète se met à courir lorsque le précédent a terminé sa<br />

distance. Cet événement est représenté par trois objets 100_metres, 200_metres,<br />

300_metres.<br />

Tous les threads sont lancés au début du programme, mais les 3 derniers attendent<br />

leurs événements respectifs pour déclencher leurs courses.<br />

Course 4 x 100 mètres<br />

#!/usr/bin/python<br />

# -*- coding: utf8 -*from<br />

threading import Thread, Event<br />

from time import sleep<br />

from sys import stdout<br />

_100_metres = Event()<br />

_200_metres = Event()<br />

_300_metres = Event()<br />

class Coureur1(Thread):<br />

def run(self):<br />

for i in range(10):

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

Saved successfully!

Ooh no, something went wrong!