Посты с тэгом profiling


Профилирование и отладка Python, отладка


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

Сегодня я предлагаю рассмотреть методы отладки программ.

Начнём!


Профилирование и отладка Python, инструменты

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

Сегодня мы познакомимся с основной и самой многочисленной группой инструментов — событийными профайлерами.

Приступим!



Профилирование и отладка Python, переходим к практике

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

Сегодня я предлагаю перейти к практике и покажу на примерах способы ручного профилирования (и даже «метод пристального взгляда» =). Будут так же рассмотрены инструменты для статистического профилирования.
Поехали!



Профилирование и отладка Python

Некоторое время назад я рассказывал о «Профилировании и отладке Django». После выступления я получил много вопросов (как лично, так и по email), с парой новых знакомых мы даже выбрались в бар, чтобы обсудить важные проблемы программирования за кружечкой отменного эля, со многими людьми я продолжаю общаться до сих пор.

Поскольку выступление вызвало живой интерес, а беседы с коллегами позволили мне переосмыслить некоторые моменты презентации и исправить достадные ляпы, я решил оформить доклад и свои мысли в виде статьи. Это позволит ознакомиться с темой гораздо большему кругу заинтересованных лиц, к тому же Хабр предоставляет из себя идеальную площадку для комментирования предложенного материала и общения с интересными собеседниками.
Welcome!



Простое профилирование Django приложений

Оказывается, профилировать Django приложения очень просто. Для того, чтобы посмотреть SQL запросы, есть замечательный Django Debug Toolbar, а для классического профилирования времени/вызовов есть вот такой рецепт:

  1. Добавляем в requirements.txt django-extensions==0.9
  2. Ставим kcachegrind через порты: sudo port install kcachegrind
  3. Запускаем приложение: ./manage.py runprofileserver —kcachegrind —prof-path=/tmp/my-profile-data
  4. Вызываем интересующие нас view
  5. Запускаем X11, потом kcachegrind и скармливаем ему лог.

Встроенный cProfile мне показался не слишком удобным.