2009-06-30 3 views
2

я пытался узнать, как профилировать простую программу питона с помощью шишка, но я обращенную странные ошибки,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?

Спасибо!

ответ

3

И я думаю, что я понял, что-то я пропустил более 2 часов ..

Оказывается, runcall() следует назвать,

runcall(main, self.argv) 

и это делает вещи работать!

+0

+1 Хорошая работа, вычисляемая самостоятельно – kender

1

В общем, если у вас есть способ случайным образом приостановить или прервать программу и посмотреть стек вызовов, this method always works.

+0

Nice! Мне нравится байесовская теория отладки :) – viksit