背景
http://docs.python.jp/2/library/profile.html を見て、cProfile.run() でプロファイルできるんだと思ってクラスのメソッド内で使うと NameError: name 'self' is not defined
のエラーになってしまう。
import cProfile
class MyClass(object):
def someFunc(self):
cProfile.run("self.anotherFunc()")
def anotherFunc(self):
pass
if __name__ == '__main__':
m = MyClass()
m.someFunc()
2度はまったので3度目はまる前にメモしとく。
解決方法
runctx を使うとよい
import cProfile
class MyClass(object):
def someFunc(self):
cProfile.runctx("self.anotherFunc()", globals(), locals())
def anotherFunc(self):
pass
if __name__ == '__main__':
m = MyClass()
m.someFunc()
http://stackoverflow.com/questions/4492535/profiling-a-method-of-a-class-in-python-using-cprofile を参考にした