Как отследить вызов функции в Python? - PullRequest
0 голосов
/ 29 марта 2020

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

Посмотрите на этот пример кода, он получает тип операции (сложение или вычитание) и два значения (x и y), выполняет эти два значения в соответствии с операцией и в конце выводит сообщение:

def calc(op, x, y):
    if op == 'sum':
        return x + y
    elif op == 'subtraction':
        return x - y


def msg(op, x, y):
    if op == 'sum':
        result = calc(op, x, y)
        return "The result of the sum is: " + str(result)
    elif op == 'subtraction':
        result = calc(op, x, y)
        return "The result of the subtraction is: " + str(result)


if __name__ == '__main__':
    my_sum = msg('sum', 3, 2)
    print(my_sum)

Итак, это «отслеживание от начала до конца sh» будет выглядеть примерно так:

  1. Строка 17: if __name__ == '__main__':
  2. Строка 18: my_sum = msg('sum', 3, 2)
  3. Строка 8: def msg(op, x, y):
  4. Строка 9: if op == 'sum':
  5. Строка 10: result = calc(op, x, y)
  6. Строка 1: def calc(op, x, y):
  7. Строка 2: if op == 'sum':
  8. Строка 3: return x + y
  9. Строка 11: return "The result of the sum is:" + str(result)
  10. Строка 19: print(my_sum)

И в конце она возвращает сообщение " Результат суммы: 5 ".

1 Ответ

0 голосов
/ 29 марта 2020

Вы можете профилировать свой скрипт Python. Сам Python в стандартной библиотеке имеет [profilers] (https://docs.python.org/3/library/profile.html#introduction -to-the-profilers ) для профилирования и отслеживания вашего скрипта. Также есть визуальная библиотека [Tuna] (https://github.com/nschloe/tuna), которая может помочь вам графически профилировать ваш скрипт. Возможно, вы можете использовать другой инструмент, чтобы легко отследить весь ваш скрипт, который называется [KCacheGrind] (https://kcachegrind.github.io/html/Home.html), который показывает визуально ориентированную трассировку вызовов функций.

...