Как удалить библиотечные модули или определенные функции из 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