Pergunta

Eu estava tentando aprender a perfil de um programa de python simples usando figurão, mas estou enfrentando um erro estranho,

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()

e a saída,

.
.

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

Será que alguém sabe por que isso acontece? Parece-me como um problema com o próprio profiler figurão. Alternativamente, as pessoas têm sugestões sobre outros métodos para o perfil programas Python?

Obrigado!

Foi útil?

Solução

E eu acho que eu descobri algo que eu perdi mais de 2 horas ..

Acontece que, runcall () deve ser chamado como,

runcall(main, self.argv)

e isso torna as coisas funcionam!

Outras dicas

Em geral, se você tem uma maneira de fazer uma pausa de forma aleatória ou interromper o programa e ver a pilha de chamadas, este método sempre funciona .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top