python: отследить вызов функций по имени

подскажите, как в питоне можно зная имя функции понять сколько раз ее вызвали

т.е. есть некоторый, недоступный для пользователя код (обёрнутый в вызов функции) внутри которого вызывается функция с именем func_name

по идее (как я понимаю), надо получить доступ к стеку вызовов функций и просто подсчитать сколько раз встречается нужный мне вызов, т.е. что-то такое (в псевдокоде):

stack_start()

func()

arr = stack_stop()

count = len(i for i in arr if i == func_name

но как это реализовать на практике?

как понимаю надо смотреть в сторону библиотеки inspect?


Ответы (1 шт):

Автор решения: Zhihar

через settrace все можно сделать

from sys import settrace

def tracer(frame, event, arg=None):
    if event == "call":
        # тут делаем что хотим с функциями frame.f_code.co_name

    return tracer

settrace(tracer)
→ Ссылка