Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.
Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.
3 046 подписчиков · @BookPython
К каналу →
📌 Декораторы в Python: как они работают и зачем нужны? Сегодня я покажу вам, как работают декораторы в Python и зачем они вообще нужны. Декораторы позволяют изменять поведение фу…
Читать далее →
663
Реклама
⚡️ 40 000 000 ₽ ждут, пока ты дочитаешь этот пост Если ты пишешь код, рисуешь интерфейсы или анализируешь данные до трёх ночи — у нас для тебя новость. Стартовала регистрация на …
Читать далее →
689

Профилируем Python в продакшене: почему cProfile не подходит, и чем хорош py-spy Когда на проде начинает течь память ил

Профилируем Python в продакшене: почему cProfile не подходит, и чем хорош py-spy

Когда на проде начинает течь память или скачет CPU, первая мысль, подключить профайлер. Стандартный cProfile, это детерминированный профайлер. Он хукает каждый вызов функции.

📉 Цена: Оверхед может замедлить приложение в 2-5 раз. На нагруженном проде это означает добить сервис окончательно.

Для Live-систем нужен Sampling Profiler (сэмплирующий профайлер). Золотой стандарт сейчас - py-spy.

Как это работает?
py-spy написан на Rust. Он работает как внешний процесс, который читает память вашего Python-процесса (через системные вызовы, аналогично gdb). Он делает «снимки» стека вызовов с высокой частотой (по дефолту 100 раз в секунду).

✅ Результат: Оверхед стремится к нулю. Код инструментализировать не нужно. Рестарт сервиса не нужен.

Два главных режима работы:

1. Live View (как htop, но для функций)
Посмотреть в реальном времени, в каких функциях процесс проводит больше всего времени.

# Нужно только знать PID процесса
py-spy top --pid 12345

Вы увидите список функций, отсортированный по OwnTime (время внутри функции) и TotalTime (время с учетом дочерних вызовов).

2. Flame Graph (Огненный граф)
Для глубокого анализа лучше записать работу сервиса за период и визуализировать стек.

py-spy record -o profile.svg --pid 12345 --duration 60

Вы получите SVG-файл. Чем шире полоска, тем больше времени занимает функция. Вертикаль - это глубина стека. Сразу видно, кто «съел» процессорное время.

Нюансы для Middle+:

- GIL: py-spy умеет показывать, держит ли функция GIL. Добавьте флаг --gil.
- Docker/K8s: Так как py-spy использует системный вызов ptrace, контейнеру нужны привилегии. В Kubernetes часто нужно добавить securityContext: capabilities: add: ["SYS_PTRACE"] подам, чтобы иметь возможность профилировать их на лету.

#profiling #optimization #pyspy #debugging #python

👉 @BookPython
Ловушка замыканий: Почему ваши лямбды в цикле сломаны (Late Binding) Вы пишете код, который генерирует список функций (например, колбэки для кнопок в UI или динамические фильтры).…
Читать далее →
494
Другие главы канала «Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.»
Выберите главу, чтобы продолжить чтение
Все посты →
Глава от 10.09.2026
Ловушка замыканий: Почему ваши лямбды в цикле сломаны (Late Binding) Вы пишете …
👁 494 просмотров
Глава от 08.09.2026
⚡️ 40 000 000 ₽ ждут, пока ты дочитаешь этот пост Если ты пишешь код, рисуешь …
👁 689 просмотров
Глава от 08.09.2026
📌 Декораторы в Python: как они работают и зачем нужны? Сегодня я покажу вам, ка…
👁 663 просмотров
Глава от 07.09.2026
🐍 Как улучшить читаемость кода в Python? Читаемый код - это не роскошь, а необх…
👁 774 просмотров
Глава от 03.09.2026
Списковые включения (list comprehensions) могут содержать несколько операторов f…
👁 896 просмотров
Глава от 02.09.2026
Structured Concurrency в Python 3.11+ (TaskGroup vs Gather) Если вы до сих пор …
👁 831 просмотров
Глава от 01.09.2026
Оптимизация SQL-запросов в Django ORM Сегодня я покажу вам, как оптимизировать …
👁 902 просмотров
Глава от 31.08.2026
Оптимизация кода с помощью генераторов в Python Сегодня хочу показать вам, ка…
👁 1 039 просмотров
Глава от 28.08.2026
Python поддерживает несколько способов запуска скрипта. Обычный вариант — это py…
👁 1 170 просмотров

Популярные посты канала «Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.»

Как упростить работу с аргументами в командной строке с помощью typer Раньше для CLI-приложений на Python я использовал argparse, потом был…
👁 8 025 просмотров
Создание объекта в Python включает два ключевых этапа. Сначала вызывается метод __new__, который создаёт и возвращает новый объект. Затем вы…
👁 8 023 просмотров
🚀 Как логировать без боли в Python Как настроить логирование в Python один раз — и больше к этому не возвращаться. Обычно начинающие разра…
👁 7 991 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 7 983 просмотров
💡 Как избежать повторения кода с помощью functools.partial Как упростить код и избежать дублирования с помощью functools.partial. Допустим…
👁 7 971 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 7 941 просмотров
В Python оператор квадратных скобок [] можно переопределить, реализовав магический метод __getitem__. Это позволяет, например, создать объек…
👁 7 919 просмотров
Популярный способ объявить абстрактный метод в Python — это выбросить исключение NotImplementedError: def human_name(self): raise NotIm…
👁 7 841 просмотров
Встроенные значения float в Python используют оборудование вашего компьютера напрямую, поэтому любое значение представляется внутренне в вид…
👁 7 817 просмотров
Иногда в программе нужна очередь — контейнер, куда элементы добавляются с одной стороны и извлекаются с другой. В Python для этого можно исп…
👁 7 805 просмотров
Существует два понятия с похожими названиями, которые легко перепутать: переопределение (overriding) и перегрузка (overloading). Переопреде…
👁 7 770 просмотров
Иногда возникает необходимость выполнить участок кода и проигнорировать все возможные исключения. Это оправдано в случае с плагинами, сторон…
👁 7 752 просмотров
⚠️ Можно знать алгоритмы машинного обучения и всё равно получать плохие результаты. Большинство проблем моделей начинаются с некачественной …
👁 7 743 просмотров
Есть три ситуации, в которых только что созданную переменную нельзя аннотировать типом: распаковка кортежей, циклы for и инструкции with. В…
👁 7 701 просмотров
В Python имя переменной может состоять из одного символа подчёркивания: _. Хотя такие имена обычно недостаточно описательны и их не стоит ис…
👁 7 697 просмотров
Некоторый код может выводить интересующие вас данные в stdout, вместо того чтобы предоставлять API, возвращающий строку, пригодную для испол…
👁 7 656 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 7 624 просмотров
Скрытые фичи Enum: как выжать максимум Многие используют Enum как простой список констант. Но у enum.Enum в Python есть куда больше возможн…
👁 7 620 просмотров
Обычно вы взаимодействуете с генератором, запрашивая данные с помощью next(gen). В Python 3 вы также можете отправлять значения обратно в ге…
👁 7 605 просмотров
Чтобы отсортировать словарь по его значениям, используйте функцию sorted с пользовательской функцией ключа: >>> d = dict(a=1, c=3, b=2) >>>…
👁 7 574 просмотров

Связанные темы в других каналах

Каналы из той же тематики, где часто появляются близкие сюжеты
Вся тема →
@canalmaxone
AntiCloudMod
8038048808
👥 379 710 · -11 808/7д
@BelgorodDRONE
Информация БПЛА Белгород, Белгородский район
7924148410
👥 196 887 · +1 372/7д
@biologia89
РОБЛОКС🔷
РОБЛОКС В МАКС! Реклама: https://clck.ru/3Tmmgx
👥 182 673 · +8 314/7д
@WylsacomRed
Wylsacom Red
Официальный канал Wylsacom в Max. Тут всё про технологии и жизнь в ногу со временем! Розыгрыши: kichaev@wylsacom.media По вопросам сотрудничества: https://wylsacom.medi…
👥 165 697 · +3 875/7д
@TikTokModCloud
TikTokModCloud
Официальные обновления стабильного мода TikTok Чат: https://clck.ru/3S6mVh По рекламе: https://iimax.ru/dim4ugan
👥 120 782 · +1 554/7д
@na_kruchok
ГЛЕНТ | МЕМЫ
Глент мемы Это фан-сообщество, созданное преданными поклонниками для поддержки творчества Глента. Данный канал НЕ является официальным и ведется фанатом Биржа: telega.…
👥 74 590 · -1 991/7д
🏷 Темы и теги
#profiling #optimization #pyspy #debugging #python #telegram bots #web scraping #django #fastapi #парсинг #Технологии
📋 О канале Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.
Учим язык Python на практике. Создание веб-приложений: Django, Flask, FastAPI. Пишем ботов для Телеграм на Aiogram. Парсинг сайтов (Web Scraping): Selenium, BeautifulSoup (BS4), Scrapy. Работа с базами данных (PostgreSQL, Redis, SQL) и API. Асинхронное программирование (Asyncio). Настройка Docker, Git и Linux. Алгоритмы, задачи с собеседований и Roadmap для Junior Python Developer.
🔍 Архив всех постов Макс
Поиск по 16,252,868 постам из 203,533 каналов
Подключить за 490 ₽/мес →
Удалить пост или канал с МАКСОТЕКИ
Заявка подтверждается через бота Макс: нужно быть администратором канала и добавить бота МАКСОТЕКИ в администраторы. После проверки канал или конкретный пост скрывается с сайта.
📊 Аналитика канала «Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.» ➡️ Перейти в канал Макс
Заявка в МАКСОТЕКА
Добавьте свой канал в каталог
Зарегистрируйтесь в личном кабинете и добавьте канал за пару кликов.
Перейти в личный кабинет →

Бесплатная регистрация, быстрая модерация.