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.

462<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Un cas récurrent, et beaucoup plus simple, d’échanges entre threads est présenté dans<br />

la section suivante, mais avant d’aller la lire, merci de laisser nos coureurs faire leur<br />

course, ils attendent depuis quelque temps...<br />

La course, enfin<br />

[tziade@Tarek Documents]$ python course.py<br />

..........100M..........200M..........300M..........400M<br />

Le module Queue<br />

Ce module implémente une queue FIFO (first in first out) dans laquelle des données<br />

peuvent êtres ajoutées et récupérées. First in first out signifie que la première donnée<br />

ajoutée est la première récupérée, à l’image d’un tuyau, en opposition aux piles LIFO<br />

(last in first out) où le dernier élément ajouté est le premier à être servi, à l’image<br />

d’une pile de dossiers.<br />

Cette classe convient bien à l’échange de données entre threads car elle est<br />

thread-safe. Les threads qui remplissent la pile sont nommés Producteurs et ceux qui<br />

récupèrent les données Consommateurs.<br />

class Queue(maxsize)<br />

Un objet Queue doit être construit avec le paramètre maxsize qui détermine la taille<br />

de la pile. Lorsque la pile est pleine, il n’est plus possible d’y ajouter des éléments. Si<br />

maxsize est à 0 ou négatif, la pile est de taille infinie.<br />

put(item[, block[, timeout]])<br />

Ajoute l’élément item dans la pile. L’appel à cette méthode devient bloquant lorsque<br />

la pile est pleine : put() rend alors la main dès que l’élément a pu être ajouté. block<br />

peut être défini à False. Dans ce cas si la pile est pleine, put() lève une exception de<br />

type Full.<br />

put_nowait(item)<br />

Raccourci pour la notation put(item, block=False).<br />

get([block[, timeout]])<br />

Renvoie le premier élément inséré et l’enlève de la pile. block, à défaut à True, met<br />

en attente le code si la pile est vide, avec un timeout en secondes optionnel. Si block<br />

est forcé à False, et si la pile est vide, une exception Empty est levée.<br />

get_nowait()<br />

Raccourci pour la notation get(block=False).

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

Saved successfully!

Ooh no, something went wrong!