Quizás es simplemente que no existe, ya que no puedo encontrarlo en pydoc. Pero al usar el paquete de registro de Python, ¿hay alguna manera de consultar un registrador para averiguar cuántas veces se llamó a una función en particular? Por ejemplo, ¿cuántos errores/advertencias se informaron?¿Cuántas veces se llamó a logging.error()?
Respuesta
El módulo de registro no parece ser compatible con esto. A largo plazo, probablemente sería mejor crear un nuevo módulo y agregar esta característica mediante la subclasificación de los elementos en el módulo de registro existente para agregar las características que necesita, pero también podría lograr este comportamiento con bastante facilidad con un decorador :
class callcounted(object):
"""Decorator to determine number of calls for a method"""
def __init__(self,method):
self.method=method
self.counter=0
def __call__(self,*args,**kwargs):
self.counter+=1
return self.method(*args,**kwargs)
import logging
logging.error=callcounted(logging.error)
logging.error('one')
logging.error('two')
print logging.error.counter
salida:
ERROR:root:one
ERROR:root:two
2
Hay un módulo warnings que, en cierta medida, hace algo de eso.
Es posible que desee agregar esta función de conteo a un Handler personalizado. El problema es que hay un millón de controladores y es posible que desee agregarlo a más de un tipo.
Es posible que desee agregarlo a un Filter, ya que es independiente de los manipuladores en uso.
también puede agregar un nuevo manejador al registrador que cuenta con todas las llamadas:
class MsgCounterHandler(logging.Handler):
level2count = None
def __init__(self, *args, **kwargs):
super(MsgCounterHandler, self).__init__(*args, **kwargs)
self.level2count = {}
def emit(self, record):
l = record.levelname
if (l not in self.level2count):
self.level2count[l] = 0
self.level2count[l] += 1
a continuación, puede utilizar la popa dict erwards para dar salida a la cantidad de llamadas.
- 1. ¿Cuántas veces se ejecutó el programa? C#
- 2. ¿Cuántas veces se llamará a strlen() en este ciclo for?
- 3. Cómo contar la cantidad de veces que se llamó a una función, FP way
- 4. onLocationChanged() nunca se llamó
- 5. onActivityResult nunca se llamó
- 6. PictureCallback.onPictureTaken nunca se llamó
- 7. ¿Por qué el observador en NSNotification llamó dos veces ...?
- 8. Actividad OnDestroy nunca se llamó?
- 9. Método didUpdateLocation Nunca se llamó
- 10. UIWebView shouldStartLoadWithRequest solo se llamó una vez?
- 11. ¿Se realiza un seguimiento de cuántas veces se reproduce un elemento de audio HTML5?
- 12. contar cuántas veces aparece una cadena dentro de otra cadena
- 13. ¿Cuántas veces puedo usar randomGenerator.nextDouble() antes de tener que resembrar?
- 14. Cómo contar cuántas veces ocurre un valor después de otra
- 15. ¿cómo investigamos cuántas veces un navegador está haciendo reflows?
- 16. ¿Cuántas veces lanzo un objeto asignado o retenido?
- 17. Verificación de un método se llamó
- 18. Javascript: Cuántas veces ocurre un carácter en una cadena
- 19. Cómo mostrar cuántas veces aparece un elemento de matriz
- 20. Compruebe cuántas veces el valor específico en la matriz PHP
- 21. SharedPreferences a veces se eliminan
- 22. Probando si se llamó a un método protegido
- 23. php: determine dónde se llamó a la función desde
- 24. Cuando hay varias llamadas al mismo UDF en una sola instrucción, ¿cuántas veces se llamará?
- 25. ¿Cuántas veces se pueden anidar las clases dentro de una clase?
- 26. GDB: ¿Hay algún comando que le permita ver cuántas veces se ha llamado una función?
- 27. Buscar líneas duplicadas en un archivo y contar cuántas veces se duplicó cada línea?
- 28. ¿Hay alguna manera de averiguar cuántas veces se ha instanciado una clase en php?
- 29. Android: onPreviewFrame nunca se llamó sin SurfaceView
- 30. Notificación de accesibilidad Nunca se llamó
Esto fue ideal para mí. La respuesta del decorador sombreó el verdadero nombre de la función y el número de línea desde donde se llamó al registrador. Con un controlador personalizado, funcionó perfectamente. –