10.8 Extensions --- Déduire de Meilleurs Profileurs

Extensions du Profileur

La classe Profile du module profile à été écrite de manière que l'on puisse développer des classes dérivées pour étendre les fonctionnalités du profileur. Plutôt que de décrire tous les détails d'un tel développement, Je vais juste présenter les deux exemples suivants de classes dérivées qui peuvent ëtre utilisées pour réaliser un profil. Si notre lecteur est programmeur Python passionné, alors il pourra utiliser ces exemples comme modèle et créer des classes de profilage similaires (et peut ëtre mëme meilleures).

Si tout ce que vous voulez faire est de changer la manière d'appeler le compteur de temps (timer), ou la fonction de mesure du temps utilisée, alors la classe de base possède une option pour cela dans le constructeur de classe. Examinons le passage d'un nom de fonction à appeler dans le constructeur:

pr = profile.Profile(votre_fonction_temps)

Le profileur résultant appellera votre_fonction_temps() au lieu de os.times(). La fonction doit retourner soit un nombre unique soit une liste de nombres ( comme ce que retourne os.times()). Si la fonction retourne un nombre relatif au temps unique, ou si la liste des nombres en retour a une longeur de 2, alors vous obtiendrez une version spécialement rapide de la fonction de distribution (dispatch routine).

Attention vous devrez calibrer la classe profileur pour la fonction temps que vous aurez choisi. Pour beaucoup de machines, une fonction temps (timer) qui retourne une seule valeur entière donnera les meilleurs résultats en terme de faible surcharge durant le profilage . ( la fonction os.times() est assez mauvaise , car cette fonction retourne un tuple de nombres flottants (floating point) et ainsi tous les calculs sont en nombres flottants dans le profileur!). Si vous voulez lui subtituer une meilleure fonction temps (timer) de la facon la plus propre, vous devrez dériver une classe et simplement mettre à sa place une méthode de distribution (dispatch) qui traite mieux vos appel temps , et aussi mettre la constante de calibration appropriée :-).


Sous-sections
  1. Classe OldProfile
  2. HotProfile Class