Как получить список функций, вызываемых другой функцией во время выполнения в Python? [закрыто]Python

Программы на Python
Ответить
Anonymous
 Как получить список функций, вызываемых другой функцией во время выполнения в Python? [закрыто]

Сообщение Anonymous »

Я пытаюсь отслеживать функции, которые вызываются в определенных точках выполнения моей программы.
Это не для целей отладки, а скорее для оценки того, какие функции, которые я написал, используются с различными наборами входных данных. Я пишу код, который преобразует ориентированные графы в другой формат, поэтому я хочу отслеживать, какие функции вызываются при преобразовании каждого узла/ребра.
Поскольку мне нужна информация на уровне узла/ребра, получение стека вызовов в конце выполнения было бы не идеальным решением.
Я хочу что-то вроде этого:

Код: Выделить всё

def convert_node(node_info):

# get the function that should be called from my library of ConversionFunctions
node_conversion_fxn = getattr(ConversionFunctions, node_info['fxn_name'])

# call the retrieved function
node_conversion_fxn(**node_info['arguments'])

# TODO: get list of which functions in the ConversionFunctions library were called
# (the functions can call each other,
# so just keeping track of the top-level retrieved function is not enough)
Некоторые ответы, которые я нашел, предполагали наличие декоратора, но это вызвало у меня некоторые проблемы, поскольку часть моего кода включает проверку того, что node_info['arguments'] соответствует сигнатуре функции node_info['fxn_name'], и когда я использовал декоратор, сигнатура функции изменилась, поскольку она была обернута в декоратор. Одна из возможностей - выяснить, как с этим справиться, но если есть другой способ сделать это, то он тоже подойдет.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»