Domanda

Stavo cercando di imparare al profilo di un semplice programma Python usando hotshot, ma sto affrontando un errore di strano,

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 l'uscita,

.
.

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

Qualcuno sa perché questo accade? Sembra a me come un problema con il hotshot profiler stesso. In alternativa, le persone hanno suggerimenti su altri metodi al profilo programmi Python?

Grazie!

È stato utile?

Soluzione

E io credo di aver capito qualcosa che mi mancava per oltre 2 ore ..

Risulta, runcall () dovrebbe essere chiamato come,

runcall(main, self.argv)

e questo rende le cose funzionano!

Altri suggerimenti

In generale, se si dispone di un modo per mettere in pausa in modo casuale o interrompere il programma e vedere lo stack di chiamate, questo metodo funziona sempre .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top