有关python性能分析的问题

时间:2010-10-20 19:29:25

标签: python profiling

我正在尝试在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”会被打印出来,但后来我得到了刚刚描述的错误。我做错了什么?

2 个答案:

答案 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")