Анализатор производительности - PullRequest
1 голос
/ 21 апреля 2011

Это было около 8-9 лет назад, когда я увидел инструмент для Visual Studio (я не очень помню название), который может визуализировать вызовы функций и их производительность.Мне очень понравилось, поэтому мне было интересно, есть ли что-нибудь подобное в Python.Допустим, у вас есть три функции:

def first_func():
    ...

def second_func():
    ...
    for i in xrange(10):
        first_function()
    ...

def third_func():
    ...
    for i in xrange(5):
        second_function()
    ...

Итак, окончательный отчет об этом инструменте был примерно таким (включая диаграммы подключения):

first_func[avg 2ms] <--50 times--< second_func[avg 25ms] <--5 times--< third_func[avg 140ms]

Такой инструмент сделал бы этолегче найти узкие места в системе.Специально для больших систем.

Ответы [ 3 ]

3 голосов
/ 21 апреля 2011

Вы можете использовать профилировщик в комплекте с установкой Python. Python Profiler Link

2 голосов
/ 11 февраля 2016

Пошаговая синхронизация и частота выполнения с помощью профилировщика:

Во-первых, установите line_profiler

Во-вторых, измените ваш исходный код, украсив функцию, которую вы хотите измерить, с помощью@profile decorator.

В-третьих, kernprof -l -v yourscript.py

Опция -l говорит Kernprof вводить декоратор @profile во встроенные функции вашего скрипта, а -v указывает Kernprof один раз отобразить информацию о времениваш сценарий завершен.

вывод:

enter image description here

1 голос
/ 21 апреля 2011

Принято считать, что вам нужно знать, сколько раз вещи называются, сколько времени они занимают («я» против «включительно») и «кто звонит - кому», сколько времени. Затем вы можете надеть колпачок вашего детектива и, надеюсь, выяснить, где проблема.

Существует другой подход, который заключается в том, чтобы спрашивать не о функциях, а о строках кода, какой процент времени настенных часов они занимают в стеке. Причина в том, что если такую ​​строку кода можно было бы сделать не занимая время, избегая ее или удаляя ее или выполняя свою работу по-другому, этот процент - это то, сколько можно было бы сэкономить. Вам не нужно быть детективом, чтобы определить это. Любое узкое место в вашем коде должно появляться в виде такой строки, и точный процент не важен. Вот пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...