Python探查器与对象的使用
关于探查器的使用,我有一个特定的问题。我是python编程新手 我试图分析一个我想作为类方法调用的函数,类似这样Python探查器与对象的使用,python,profiler,Python,Profiler,关于探查器的使用,我有一个特定的问题。我是python编程新手 我试图分析一个我想作为类方法调用的函数,类似这样 import profile class Class: def doSomething(): do here .. def callMethod(): self.doSomething() 我想用它来代替这个 profile.run(self.doSomething()) 但是,profile.run需要它里面的字符串,
import profile
class Class:
def doSomething():
do here ..
def callMethod():
self.doSomething()
我想用它来代替这个
profile.run(self.doSomething())
但是,profile.run
需要它里面的字符串,我得到了一个错误
TypeError: exec: arg 1 must be a string, file, or code object
有人能帮忙吗
谢谢您需要修复各种不精确性(缺少
self
,说您在使用类方法,但却看不到classmethod
,无法从对象继承,…)然后,通过给它一个想要的字符串使profile
满意——并且实例的名称必须全局可见,以便profile
可以实际使用该字符串。例如:
import profile
import time
class Class(object):
def doSomething(self):
time.sleep(0.1)
def callMethod(self):
global _o
_o = self
profile.run('_o.doSomething()')
o = Class()
o.callMethod()
修正
我使用了cProfile模块,而不是profile,根据python文档,该模块的开销要小得多
参考:
使用cProfiler,可以使用runctx模块传递本地和全局参数
因此,对于同一个问题,我做了以下工作:
import cProfile
cProfile.runctx('self.doSomething()',globals(),locals())
它成功了:)
另外,如果你有更多的参数要传递,你可以
import cProfile
cProfile.runctx('self.doSomething(x,y,z)',globals(),locals())
谢谢你的帮助那么?为什么不向配置文件传递一个字符串。运行?这对我不起作用,但白日梦者的回答确实起作用。