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.

Exercices corrigés<br />

CHAPITRE 11<br />

appelé producer-consumer. Le principe de ce design pattern est de fournir à l’application<br />

une file d’attente pour les traitements : chaque traitement à exécuter en tâche de<br />

fond est ajouté dans la file d’attente et un ou plusieurs threads, nommés workers, se<br />

chargent de la tâche.<br />

En plus de rendre l’interface à l’utilisateur, cette parallélisation multiple accélère le<br />

traitement.<br />

Exercice 9 : Un web spider rapide<br />

Description<br />

L’objectif de cet exercice est de mettre en place le modèle producteur-consommateur,<br />

présenté dans l’extension de l’exercice précédent, en utilisant des processus.<br />

Le programme doit lancer en parallèle 4 processus en charge de trouver des pages web<br />

qui contiennent un mot. Le système est amorcé avec une dizaine de pages que les processus<br />

visitent. À chaque page visitée, le processus suit les liens et visite au maximum<br />

50 pages. Si une page a déjà été visitée par un autre processus, elle ne le sera pas de nouveau.<br />

Un système de journal doit aussi afficher les URL scannées au fur et à mesure.<br />

Points abordés<br />

Les modules multiprocessing, urllib2 et module logging.<br />

Solution<br />

Producteur-consommateur<br />

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

# -*- coding: ISO-8859-15 -*import<br />

os<br />

import urllib2<br />

import sys<br />

import logging<br />

from multiprocessing import Pool<br />

from multiprocessing import TimeoutError<br />

from multiprocessing import Manager<br />

processed_urls = Manager().dict()<br />

# mise en place du logger<br />

logger = logging.getLogger('WebLogger')<br />

logger.setLevel(logging.INFO)<br />

369

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

Saved successfully!

Ooh no, something went wrong!