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需要它里面的字符串,

关于探查器的使用,我有一个特定的问题。我是python编程新手 我试图分析一个我想作为类方法调用的函数,类似这样

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())

谢谢你的帮助

那么?为什么不向
配置文件传递一个字符串。运行
?这对我不起作用,但白日梦者的回答确实起作用。