Necesito saber el número de llamadas a una cierta función

Ernesto Revilla erny en sicem.biz
Lun Nov 28 23:16:17 CET 2005


Evidentente, como siempre estás restando 1 lo vas a llamar
n+1 veces (n + el 1 vez para el 0).

Pero para una función en general:

puedes usar los profilers "profile" (instalable por separado en algunas 
distribuciones Linux, como Debian) o "hotshot" (más eficiente):

profile:
import profile
profile.run("fact(120)")

Con hotshot tienes que usar un archivo intermedio.
hotshot:

import hotshot, hotshot.stats
prof=hotshot.Profile("factorial.log")
prof.run("fact(120)")
prof.close()
stats=hotshot.stats.load("factorial.log")
stats.print_stats()

Erny

Batista, Facundo wrote:

>#- Resulta que me gustaría saber la cantidad de llamada que se 
>#- hace sobre
>#- unacierta función en python y mostrar con que parámetros, algo así
>#- 
>#- def factorial(n):
>#-     if n==0:
>#-          return 1
>#-     else:
>#-          return n*factorial(n-1)
>#- 
>#- y que al llamar a factorial(10) pues me vaya mostrando las diferentes
>#- llamdas que se hace, y lo que se va devolviendo tambien, 
>
>Tenés una función definida así...
>
>  
>
>>>>def func(x):
>>>>        
>>>>
>	print x
>
>
>Y la usás, sin problema...
>	
>  
>
>>>>func(2)
>>>>        
>>>>
>2
>  
>
>>>>func(3)
>>>>        
>>>>
>3
>
>
>Lo que podés hacer, es lo siguiente:
>
>  
>
>>>>f = func
>>>>def func(x):
>>>>        
>>>>
>	print "la funcion fue llamada con", x
>	f(x)
>
>
>Entonces, cuando la uses igual que antes, pasará primero por la que has
>puesto para contar la cantidad de llamadas y eso:
>	
>  
>
>>>>func(2)
>>>>        
>>>>
>la funcion fue llamada con 2
>2
>  
>
>>>>func(3)
>>>>        
>>>>
>la funcion fue llamada con 3
>3
>
>
>Slds.
>
>
>.    Facundo
>
>Bitácora De Vuelo: http://www.taniquetil.com.ar/plog
>PyAr - Python Argentina: http://www.python.org/ar/
>
>
>  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
>. . . . . . . . . . . . . . . .
>ADVERTENCIA.
>
>La información contenida en este mensaje y cualquier archivo anexo al mismo,
>son para uso exclusivo del destinatario y pueden contener información
>confidencial o propietaria, cuya divulgación es sancionada por la ley.
>Si Ud. No es uno de los destinatarios consignados o la persona responsable
>de hacer llegar este mensaje a los destinatarios consignados, no está
>autorizado a divulgar, copiar, distribuir o retener información (o parte de
>ella) contenida en este mensaje. Por favor notifíquenos respondiendo al
>remitente, borre el mensaje original y borre las copias (impresas o grabadas
>en cualquier medio magnético) que pueda haber realizado del mismo.
>Todas las opiniones contenidas en este mail son propias del autor del
>mensaje y no necesariamente coinciden con las de Telefónica Comunicaciones
>Personales S.A. o alguna empresa asociada.
>Los mensajes electrónicos pueden ser alterados, motivo por el cual
>Telefónica Comunicaciones Personales S.A. no aceptará ninguna obligación
>cualquiera sea el resultante de este mensaje.
>Muchas Gracias.
>  
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es
>  
>




Más información sobre la lista de distribución Python-es