begin process at 2012 05 24 01:29:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > PROFILE DE CODE AVEC LE MODULE PROFILE ET PSTATS

PROFILE DE CODE AVEC LE MODULE PROFILE ET PSTATS


 Information sur la source

Note :
Aucune note
Catégorie :Tutoriaux Classé sous :profile, pstats, code, sort, stats Niveau :Initié Date de création :07/10/2004 Date de mise à jour :27/10/2004 09:43:47 Vu :3 718

Auteur : MHI

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Python est fourni avec un module qui permet de mesurer le temps passé dans chaques méthodes ou fonctions : le module Profile

Exemple d'utilisation :

La façon la plus simple d'utiliser 'Profile' est d'utiliser la fonction 'Run' de ce module (elle instancie et utilise l'objet Profile en interne), cette fonction accepte deux paramètres. Le premier indique la fonction à tracer, et le deuxième est le nom du fichier dans lequel on veut sauvegarder les résultats (il est facultatif).

Si le deuxième paramètre n'est pas renseigné :

import profile
profile.run('mafonction()')
les résultats sont renvoyés par la fonction sous la forme :

ncalls tottime percall cumtime percall filename:lineno(function)
Sinon s'il est renseigné alors les résultats seront sauvegardés dans un fichier portant le nom du fichier qui est passé en paramètre.

import profile
profile.run('mafonction()','perfMaFonction ')
Le module pstats permet d'exploiter les résultats d'un fichier écrit par le module 'profile'. Pour traiter un fichier Profile, on utilise la fonction 'stat' en lui passant en paramètre le nom du fichier. Puis on affiche les résultats grâce à la fonction 'print_stats'

import pstats
p = pstats.Stats('perfMaFonction')
p.print_stats(10)     // Affiche que les 10 premier résultats

Exemples :

Wed Sep 29 14:15:28 2004    perfMaFonction

         53 function calls in 0.003 CPU seconds

   Random listing order was used

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        0    0.000             0.000          profile:0(profiler)
        1    0.000    0.000    0.002    0.002 C:\TestPython\test_profile.py:29(testfunc)
        8    0.000    0.000    0.002    0.000 C:\TestPython\test_profile.py:64(helper2)
        4    0.000    0.000    0.000    0.000 C:\TestPython\test_profile.py:56(helper1)
        1    0.001    0.001    0.003    0.003 profile:0(testfunc())
       28    0.000    0.000    0.000    0.000 C:\TestPython\test_profile.py:86(__getattr__)
        2    0.000    0.000    0.002    0.001 C:\TestPython\test_profile.py:38(helper)
        1    0.000    0.000    0.002    0.002 :1(?)
        8    0.001    0.000    0.001    0.000 C:\TestPython\test_profile.py:74(subhelper)

ncall s : nombre d'appel de la fonction de base
tottime : temps total de la fonction de base (hors sous-fonction)
percall : tottime / ncalls
cumtime : temps total du début de l'appel de la fonction de base jusqu'a la fin (sous-fonction comprise)



On peut également choisir de trier les résultats avec la procédure 'Sort_Stats' en lui indiquant en paramètre les colonnes à trier :

p.sort_stats('time')  // On trie sur le temps passé

p.sort_stats('time', 'name')  // On trie sur le temps passé et sur le nom

Pour des raisons de présentation, il est possible d'utiliser strip_dirs() avant d'afficher les résultats. Il permet de supprimer les chemins devant le nom du source de la fonction dans la colonne 'filename'.

import pstats
p = pstats.Stats('perfMaFonction')
p.strip_dirs()
p.pr int_stats()

La procedure strip_dirs() affiche les lignes de résultat aléatoirement, s'il y a eu avant un trie ('sort_stats') sur le nom alors l'ordre de trie n'est plus le même, Il faut donc utiliser 'strip_dirs' avant de faire 'sort_stats'.

La fonction 'print_callees' permet de lister toutes les fonctions appelées par la fonction indiqué en paramètre :

import pstats
stat = pstats.Stats('FichierProfile')
stat.print_callees( 'MaFonction()')
stat.print_callees()



sinon elle liste toutes les fonctions appelées par la fonction de base :

import pstats
stat = pstats.Stats('FichierProfile')




 Historique

27 octobre 2004 09:43:48 :
changement de catégorie

 Sources du même auteur

LISTE FICHIER AVEC EXTENSION PRÉSISE ET LANCEMENT DE PROC PA...
GESTION DE FICHIER - BASIQUE

 Sources de la même categorie

CALCULATRICE (AIDE SUR LES FONCTIONS EN PYTHON) par matad0r
CALCULATRICE, INTRODUCTION AU LAMBDA par xeolin
UTILISATION DES PROPRIÉTÉS EN PYTHON par FloZix
UNIX - MODULE TIME : TEMPS D'UNE FONCTION ALGORITHMIQUE AVEC... par loupmagic
Source avec Zip TUTORIEL - INTRODUCTION À WXPYTHON par aera group

 Sources en rapport avec celle ci

Source avec Zip TPYCODE, TRADUCTEUR DE CODE par jonathan33350

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

encodage des caractères [ par taz_iup ] J'aimerai que quelque'un fasse un peu de lumiere sur ce monde obscur de l'encodage des caratères..... ex de code. def ma fonction( self, repert parser code source [ par nico3141 ] Bonjour,   Je voudrai réaliser un analyseur de code source fortran 77 puis 90 ou C qui tourne sur Unix et Windows J'ai commencé m'ai re Code source : bizare venez [ par xeolin ] question qui pourait paraitre bizarre :a quoi servent les point...j'en ai pratiquement 200 mé je ne sait pas a quoi ca sert.(comme prizee pour des kdo Présentation de code correcte ? [ par corbaque ] Bonjour à tous,J'ai découvert le Python il y a trés peu de temps, je programme depuis 9 mois en ruby, et je me suis essayé à se language qui m'impress qqn pourrait il me donner qques conseil? [ par Veust ] je suis actuellement sur un projet ou je suis suppposé écrire un code sous python permettant de faire communiquer plusieurs types de plateformes (PC, besoin d'aide ,code client/serveur [ par Veust ] Je suis actuellement sur un projet ou je suis suppposé écrire un code sous python permettant de faire communiquer plusieurs types de plateformes (PC, python et code barre [ par yanock0 ] voila je suis en stage et mon probleme est qu'il faut que je traite un code barre. Alors je n'ai pas encore recu le materiel,(il devrait etre la demai Une scrollbar sur un Label ? [ par stephane70 ] Bonjour, Je mets en place un petit programme destiné à faire un instantanée graphique des connections en cours sur le pc ainsi que les executables en Thème systèmes d'exploitations [ par petitmoustique ] J'ai une idée pour améliorer code source : rajouter les systemes d'exploitation ; cad rajouter un onglet ou il y aura ms-dos ( windows ) , bash ou she Conversion de code C en Python [ par EvinVodKha ] Bonjour,J'ai environ 2500 lignes de code C à traduire rapidement en Python (homogénéisation du code d'un logiciel de 8000 lignes).Connaissez-vous un l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,498 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales