2009-06-23 5 views
3

Comment puis-je profiler un appel qui implique self et arguments en python?Profilage de soi et des arguments en python?

def performProfile(self): 
    import cProfile 
    self.profileCommand(1000000) 

def profileCommand(self, a): 
    for i in a: 
     pass 

Dans l'exemple ci-dessus, comment est-ce que je profilerais juste l'appel à profileCommand? J'ai compris que je devais utiliser runctx pour argumenter, mais comment je fais face à soi? (Le code implique en fait une interface utilisateur, il est donc difficile de sortir l'appel pour profiler séparément).

Répondre

11

vous devez passer les locaux/globaux dict et passer le premier argument que vous tapez habituellement par exemple.

cProfile.runctx("self.profileCommand(100)", globals(),locals()) 

utiliser quelque chose comme ce

class A(object): 
    def performProfile(self): 
     import cProfile 
     cProfile.runctx("self.profileCommand(100)", globals(),locals()) 

    def profileCommand(self, a): 
     for i in xrange(a): 
      pass 
     print "end." 

A().performProfile() 

et ne pas appeler toute l'interface utilisateur dans le profil, le profil de la fonction spécifique ou le calcul

Questions connexes