Как настроить функцию профилирования для организации на основе Python?

#python-3.x

#python-3.x

Вопрос:

Я работаю с организацией с открытым исходным кодом EinsteinPy. Нам нужно выяснить, какие методы являются медленными, чтобы использовать их. Сейчас мы просто выполняем jit для функций, которые, как мы знаем по опыту, работают медленно. Но нам нужно придумать метод профилирования. Это похоже на требование в долгосрочной перспективе.

Я пытался настроить профилировщики, но это просто создает файлы, которые другие участники наверняка не сочтут забавными.

Комментарии:

1. Добро пожаловать в StackOverflow и хороший проект, в чем вопрос?

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

3. Разве простых измерений времени было бы недостаточно? Скажем, реализованный как декоратор, который повторяет выполнение N раз, подобно timeit магии Jupyter Notebook.

4. Должны ли мы применять ее ко всем методам, чтобы какой-то метод занимал больше определенного времени, выдавал какое-то предупреждение? Но если это так, является ли хорошей практикой добавление дополнительных декораторов к каждому методу? Извините, если я спрошу что-то наивное, я новичок в opensource.

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