Pregunta

Yo estaba tratando de aprender al perfil de un programa Python simple usando pez gordo, pero estoy frente a un error raro,

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

y la salida,

.
.

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

¿Alguien sabe por qué sucede esto? A mi me parece como un problema con el generador de perfiles pez gordo. Por otra parte, la gente tiene sugerencias sobre otros métodos para perfilar programas Python?

Gracias!

¿Fue útil?

Solución

Y creo que he descubierto algo que había perdido más de 2 horas ..

Resulta que, runcall () debe ser llamado como,

runcall(main, self.argv)

y esto hace que las cosas funcionan!

Otros consejos

En general, si usted tiene una manera de hacer una pausa al azar o interrumpir el programa y ver la pila de llamadas, este método siempre funciona .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top