Как удалить библиотечные модули или определенные функции из pycallgraph

Я использую pycallgraph для анализа производительности моего кода. Тем не менее, граф вызовов довольно запутан со многими вызовами системных функций, а также с некоторыми функциями, которые я не хотел бы документировать. Как я могу остановить pycallgraph сообщать об этих вызовах?

1 ответ

Решение

Pycallgraph предоставляет возможности фильтрации для фильтрации любого модуля, класса или функции, которые вы хотите исключить из графа вызовов. Следующая функция должна быть определена перед запуском трассировки и передачей в pycallgraph

пример

def filtercalls(call_stack, modul, clas, func, full):
    mod_ignore = ['shutil','scipy.optimize','re','os','sys','json']
    func_ignore = ['CustomFunctionName','pdbcall']
    clas_ignore = ['pdb']
    return modul not in mod_ignore and func not in func_ignore and clas not in clas_ignore

Начало трассировки pycallgraph

pycallgraph.start_trace(filter_func=filtercalls)

Таким образом, любой модуль, класс или функция, предоставленные вами в filtercalls, будут удалены. Обратите внимание, что много времени в стандартных библиотеках с указанием только имени модуля недостаточно. Таким образом, включение numpy в mod_ignore все равно приведет к включению numpy.core

Другие вопросы по тегам