Profil dans une méthode de la classe

Contexte

En regardant http://docs.python.jp/2/library/profile.html, j'ai pensé que je pourrais profiler avec cProfile.run () et l'ai utilisé dans la méthode de la classe `NameError: name'self 'n'est pas J'obtiens une erreur définie.

import cProfile

class MyClass(object):
    def someFunc(self):
        cProfile.run("self.anotherFunc()")

    def anotherFunc(self):
        pass

if __name__ == '__main__':
    m = MyClass()
    m.someFunc()

Je suis resté coincé deux fois, alors faites une note avant le troisième.

Solution

Utilisez runctx

import cProfile

class MyClass(object):
    def someFunc(self):
        cProfile.runctx("self.anotherFunc()", globals(), locals())

    def anotherFunc(self):
        pass

if __name__ == '__main__':
    m = MyClass()
    m.someFunc()

J'ai fait référence à http://stackoverflow.com/questions/4492535/profiling-a-method-of-a-class-in-python-using-cprofile

Recommended Posts

Profil dans une méthode de la classe
Méthode de classe Méthode statique
Parallélisation de la méthode de classe
Comment utiliser la méthode __call__ dans la classe Python
Utilisation correcte de la méthode d'instance et de la méthode de classe
Django: Importer une classe depuis une chaîne
Déclarer dynamiquement la classe comme une fermeture
La "méthode destructive" est-elle un terme Ruby?
[Python] Hériter d'une classe avec des variables de classe
Hit une méthode d'une instance de classe avec l'API Web Python Bottle