Профилирование Python: KCacheGrind + Yappi продолжает отображать неизвестную функцию - PullRequest
0 голосов
/ 26 июня 2019

Я хочу профилировать свою программу на Python, чтобы понять, почему она такая медленная.Я решил использовать Yappi, потому что моя программа многопоточная, и отобразить результаты с помощью KCacheGrind.Вот как я это делаю:

# Profile of the update method
def profile_update(table, start, end):
    print("Profiling update() on the %s table..." % (table))
    yappi.start(builtins=True)
    app.update(...)
    stats = yappi.get_func_stats()
    output_name = "profiler_%s.out." % (table) + datetime.now().isoformat()
    stats.save("profilers_outputs/" + output_name, type='callgrind')
    yappi.stop()
    yappi.clear_stats()
    print('\n\n\n')

Обновление метода используется для извлечения данных из базы данных с интервалом времени между началом и концом.

Выходной файл создан правильно, но когда я запускаю KCacheGrind, он печатает много ошибок, таких как:

kcachegrind(35484): Loading "profilers_outputs/profiler_benchmark.out.2019-06-26T17:21:41.147461" : 17529 :  "Undefined compressed function index 586"
kcachegrind(35484): Loading "profilers_outputs/profiler_benchmark.out.2019-06-26T17:21:41.147461" : 17529 :  "Invalid called function, setting to unknown"

В итоге я получаю граф вызовов , где всенепризнанные функции объединяются в единое целое, что делает его беспорядочным и совершенно неактуальным.Кто-нибудь знает, почему это происходит?

...