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.

480<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Ce code génère un module d’extension par le biais d’un appel à distutils<br />

particulier :<br />

setup.py pour calculs.pyx<br />

from distutils.core import setup<br />

from distutils.extension import Extension<br />

from Cython.Distutils import build_ext<br />

extension = Extension("calculs", ["calculs.pyx"])<br />

setup(name="calculs", ext_modules=[extension],<br />

cmdclass={'build_ext': build_ext})<br />

Cython gère aussi de manière transparente les conversions de types entre C et<br />

Python et permet d’attaquer des modules C externes.<br />

Cette dernière fonctionnalité fait de Cython un concurrent direct de SWIG. Cython<br />

est bien souvent préféré à ce dernier car là où SWIG impose les API des modules C<br />

encapsulés, Cython permet d’obtenir le même résultat tout en laissant le développeur<br />

définir directement, et sans ajouter une couche Python lente, ses propres interfaces<br />

pythoniques.<br />

Cython, comme Psyco, souffre de beaucoup de limitations :<br />

impossible d’imbriquer des définitions de fonctions ;<br />

impossible d’utiliser yield et les generators ;<br />

impossible d’utiliser les primitives globals() et locals().<br />

Il faut limiter son utilisation à des parties bien définies du programme pour éviter<br />

d’éventuels problèmes.<br />

Les tests de performance continus<br />

Dans la logique de la programmation dirigée par les tests vue dans le chapitre précédent,<br />

il est possible :<br />

de récupérer régulièrement des statistiques sur les performances de toutes les<br />

fonctions et classes d’un programme ;<br />

d’intégrer des tests de performance ciblés au fur et à mesure de la conception,<br />

pour garantir et surveiller que certaines parcelles critiques remplissent toujours les<br />

conditions de performance voulues.

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

Saved successfully!

Ooh no, something went wrong!