我试图学习如何使用 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

有人知道为什么会发生这种情况吗?在我看来,这似乎是热点分析器本身的问题。或者,人们对分析 python 程序的其他方法有建议吗?

谢谢!

有帮助吗?

解决方案

和我想我已经想通了,这是我错过了2个多小时..

原来,runcall()应被称为,

runcall(main, self.argv)

这使得工作的事情!

其他提示

一般来说,如果你有办法随机暂停或中断程序并查看调用堆栈, 这个方法总是有效的.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top