Repolode
joerick

joerick/pyinstrument

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

Звёзды
8,026
Форки
302
Открытые issues
32
Последний коммит
6 дней назад

Что это?

Pyinstrument — статистический профилировщик для Python. Он снимает стек вызовов во время работы программы, а затем показывает, какие функции занимают больше всего времени, чтобы вы могли сосредоточить усилия по оптимизации на самых медленных участках кода.

Pyinstrument можно запускать из командной строки (`pyinstrument script.py`), использовать через Python API — с блоком `with` или декоратором для профилирования конкретного участка кода. Результаты можно выводить в виде текста в консоли, интерактивного HTML, JSON, файлов pstats и speedscope. Профилировщик также поддерживает асинхронный код и показывает время ожидания внутри корутин. В комплект входят интеграции с Django middleware и IPython/Jupyter magics, а также примеры для FastAPI и aiohttp.

По умолчанию Pyinstrument скрывает кадры стека из библиотечного кода и выделяет код вашего приложения, чтобы в отчёте были видны прежде всего те части, которыми вы управляете.

Ключевые возможности

  • 01Снимает стек вызовов с низкими накладными расходами и показывает время выполнения каждой функции.
  • 02Форматы вывода: консоль, интерактивный HTML, JSON, pstats и speedscope.
  • 03Учитывает асинхронный код и относит время ожидания к соответствующему вызову.
  • 04Позволяет профилировать целый скрипт из командной строки или отдельный блок с помощью инструкции `with` либо декоратора.
  • 05Интеграции с Django middleware и magic-командами IPython/Jupyter.
  • 06По умолчанию скрывает кадры библиотечного кода, чтобы выделить код приложения.

Сценарии использования

  • Поиск медленной функции в Python-скрипте, который выполняется слишком долго.
  • Профилирование Django view или middleware, чтобы понять, на что уходит время обработки запроса.
  • Поиск причин низкой производительности асинхронного кода, в котором задачи ждут завершения операций ввода-вывода.
  • Анализ производительности ячейки ноутбука прямо в Jupyter.

Быстрый старт

  1. 1

    Установить pyinstrument из PyPI

    pip install pyinstrument
  2. 2

    Профилировать скрипт из командной строки

    pyinstrument script.py

Что важно знать

  • В README отмечается, что профилирование внутри контейнеров Docker может давать странные результаты из-за медленных системных вызовов для измерения времени.
  • При сериализации с помощью pickle классов в скриптах, запущенных с pyinstrument, могут возникать ошибки сериализации `__main__`.

В подборках

Темы

Частые вопросы

Что такое pyinstrument?
Профилировщик стека вызовов Python, который показывает, на что уходит время в коде, и выводит результаты в консоль, HTML и других форматах. Pyinstrument — статистический профилировщик для Python. Он снимает стек вызовов во время работы программы, а затем показывает, какие функции занимают больше всего времени, чтобы вы могли сосредоточить усилия по оптимизации на самых медленных участках кода.
pyinstrument можно использовать бесплатно? Какая у него лицензия?
pyinstrument распространяется с открытым исходным кодом под лицензией BSD-3-Clause. Перед использованием в коммерческих продуктах проверьте условия лицензии.
pyinstrument всё ещё поддерживается?
Активно поддерживается. Последний коммит в pyinstrument — 1 нояб. 2026 г..
Для чего можно использовать pyinstrument?
Поиск медленной функции в Python-скрипте, который выполняется слишком долго. Профилирование Django view или middleware, чтобы понять, на что уходит время обработки запроса. Поиск причин низкой производительности асинхронного кода, в котором задачи ждут завершения операций ввода-вывода. Анализ производительности ячейки ноутбука прямо в Jupyter.
Как установить pyinstrument?
Установить pyinstrument из PyPI: pip install pyinstrument Профилировать скрипт из командной строки: pyinstrument script.py
Где скачать pyinstrument?
Исходный код и инструкции по установке — на GitHub: https://github.com/joerick/pyinstrument

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты