Python-Hotshot 错误:尝试分析简单程序时出现问题

2 投票
2 回答
750 浏览
提问于 2025-04-15 12:34

我在尝试学习如何使用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分析工具本身的问题。或者,有人有什么其他方法可以用来分析python程序吗?

谢谢!

2 个回答

1

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

3

我觉得我终于搞明白了我之前错过的一个点,花了我两个多小时。

原来,runcall() 应该这样调用:

runcall(main, self.argv)

这样做就能让事情正常运转了!

撰写回答