Python-Hotshot错误尝试分析一个简单的程序

时间:2009-06-30 01:40:03

标签: python profiler profiling

我试图学习如何使用hotshot来描述一个简单的python程序,但是我遇到了一个奇怪的错误,

import sys
import hotshot
def main(argv):
  for i in range(1,1000):
    print i

if __name__ == "__main__":
  prof = hotshot.Profile("hotshot_edi_stats")
  b,c = prof.runcall(main(sys.argv))
  prof.close()

和输出,

.
.

995
996
997
998
999
Traceback (most recent call last):
  File "t.py", line 9, in <module>
    b, c = prof.runcall(main(sys.argv))
  File "/usr/lib/python2.5/hotshot/__init__.py", line 76, in runcall
    return self._prof.runcall(func, args, kw)
TypeError: 'NoneType' object is not callable

有谁知道为什么会这样?它看起来像是hotshot profiler本身的一个问题。或者,人们对其他方法有关于python程序的建议吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

而且我想我已经找到了我错过了超过2个小时的东西..

结果证明,runcall()应该被称为

runcall(main, self.argv)

这使得事情有效!

答案 1 :(得分:1)

通常,如果您有办法随机暂停或中断程序并查看调用堆栈,this method always works