我正在尝试在python中对我的应用程序进行分析。我正在使用cProfile库。我需要分析我的应用程序的onFrame函数,但这是由外部应用程序调用的。我尝试过大量的东西,但目前我在onFrame方法中有以下内容:
runProfiler(self)
然后在课堂之外我有以下内容:
o = None
def doProfile ():
print "doProfile invoked"
o.structure.updateOrders
def runProfiler(self):
print "runProfiler invoked"
o = self
cProfile.run('doProfile()', 'profile.log')
如果这看起来很奇怪,那是因为我已经尝试了一切来摆脱错误“name doProfile not defined”。即使是现在,runProfiler方法也会被调用,并且“runProfiler invoked”会被打印出来,但后来我得到了刚刚描述的错误。我做错了什么?
答案 0 :(得分:1)
在这种情况下,您应该将必要的上下文传递给cProfile.runctx
:
cProfile.runctx("doProfile()", globals(), locals(), "profile.log")
答案 1 :(得分:0)
另一种方法是使用runcall
对象的Profile
方法。
profiler = cProfile.Profile()
profiler.runcall(doProfile)
profiler.dump_stats("profile.log")