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.

module : nom du module (tri alphabétique) ;<br />

pcalls : nombre d’appels primitifs (tri décroissant) ;<br />

line : numéro de ligne (tri décroissant) ;<br />

name : nom de la fonction (tri alphabétique) ;<br />

nfl : nom, fichier, ligne (tri alphabétique) ;<br />

stdname : nom standard (tri alphabétique) ;<br />

time : temps interne d’exécution (tri décroissant).<br />

Bonnes pratiques et optimisation du code<br />

CHAPITRE 13<br />

Plusieurs clés peuvent être fournies pour composer un tri multicritère. La méthode<br />

reverse_order() permet également d’inverser le tri obtenu, sachant que les tris<br />

appliqués par sort_stats() permettent de placer vers le haut de la liste les appels les<br />

plus coûteux.<br />

hotshot et pstats<br />

Les deux modules présentés fournissent un outil complet de profiling. L’exemple cidessous<br />

affiche la liste des méthodes appelées par le profiler, triées par nombre d’appels.<br />

profiling.py<br />

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

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

hotshot<br />

import hotshot.stats<br />

def methode1(chaine):<br />

return reversed(chaine)<br />

def methode2(chaine):<br />

if len(chaine) % 2:<br />

return methode1(chaine)<br />

else:<br />

return chaine<br />

def methode3(chaine):<br />

ch = []<br />

for i in range(3):<br />

ch.extend(methode2(chaine))<br />

return ''.join(ch)<br />

def methode4():<br />

o = ''<br />

for i in range(5000):<br />

o += methode3(str(i))<br />

return methode1(o)<br />

437

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

Saved successfully!

Ooh no, something went wrong!