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.

464<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Utilisation de multiprocessing.Pool<br />

>>> from multiprocessing import Pool<br />

>>> def async(value):<br />

... return value * 2<br />

...<br />

>>> pool = Pool()<br />

>>> result = pool.apply_async(async, [10])<br />

>>> result.get(timeout=5)<br />

20<br />

Dans l’exemple ci-dessus, un appel à async(10) est effectué dans un nouveau processus<br />

par un appel à apply_async. Le résultat qu’il retourne est un objet intermédiaire<br />

de type ApplyAsync. Cet objet possède une méthode get qui se met en attente<br />

du résultat et le renvoie. Le paramètre timeout permet de rendre la main si le processus<br />

n’a pas fini au bout de 5 secondes.<br />

Le côté obscur de la force : extension du langage<br />

Caching, threading, rien n’y fait, aucune de ces méthodes ne permet de rendre le<br />

code suffisamment rapide. Les performances ne sont tout simplement pas au<br />

rendez-vous. Il reste une (presque) dernière alternative pour optimiser le code : coder<br />

une extension à Python dans un autre langage de programmation, en l’occurrence<br />

en C puisqu’il est à la base de Python, comme la plupart des langages modernes.<br />

Il existe deux cas de figure pour concevoir un module d’extension :<br />

Une bibliothèque est déjà disponible en C, et l’exercice consiste à mettre en place<br />

un pont entre Python et cette bibliothèque : un binding.<br />

Le module en C doit être conçu, puis lié comme dans le premier cas.<br />

Mais avant d’aborder ces sujets, il est nécessaire de mettre en place un environnement<br />

de compilation.<br />

Environnement de compilation<br />

Pour étendre Python, il est nécessaire de pouvoir compiler le code C. Cette opération<br />

ne pose aucun problème sur les plates-formes GNU/Linux ou Mac OS X, où il<br />

suffit d’installer le compilateur standard gcc (http://gcc.gnu.org/), lorsqu’il n’est pas<br />

déjà installé.<br />

Sous MS-Windows, deux options s’offrent à vous :<br />

installer MVC++ (Microsoft Visual C++ Developer Studio), sachant qu’il existe une<br />

version Express gratuite, suffisante pour les besoins de compilation ;<br />

installer l’alternative libre : MingGW(http://www.mingw.org).

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

Saved successfully!

Ooh no, something went wrong!