TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.3K subscribers
Post #7606 3.69K
📉 Минус 3.2 ГБ оперативной памяти: 5 техник оптимизации Python-приложений

Многие считают, что Python «прожорлив» к памяти по умолчанию. Но часто проблема не в языке, а в архитектуре.

Вот 5 рабочих техник, которые помогли добиться такого результата:

1. Переход на Async и один воркер (Granian + Quart)

Традиционные синхронные серверы используют «веб-сад»: несколько процессов-воркеров, каждый из которых дублирует зависимости в памяти.

Решение: Переход на асинхронный фреймворк (Quart) и современный сервер (Granian). Асинхронность позволяет одному воркеру эффективно обрабатывать множество запросов, что позволило сократить количество процессов до одного без потери производительности.

2. Паттерн Raw + Dataclasses (вместо тяжелых ODM)

Библиотеки вроде MongoEngine или SQLAlchemy могут быть тяжелыми для памяти при больших объемах данных.

Решение: Использование «сырых» запросов к БД и простых Python-датаклассов с использованием __slots__. Это исключает создание словаря __dict__ для каждого объекта, экономя около 100 МБ на процесс.

3. Изоляция тяжелых импортов в подпроцессах

Если у вас есть фоновый демон (например, поисковый индексатор), он может тянуть в память всё основное приложение просто из-за цепочки импортов.

Решение: Вынесение тяжелого кода в отдельный файл, который запускается как subprocess. Основной процесс остается «легким» (22 МБ вместо 708 МБ), а тяжелые библиотеки выгружаются из памяти сразу после завершения задачи.

4. Локальные (Lazy) импорты

Импорт популярных библиотек стоит дорого сразу «на входе».

Решение: Перенесите import внутрь функций. Библиотека загрузится только в момент вызова. В Python 3.15 эта механика станет еще проще благодаря PEP 810.

5. Кэширование на диске (Diskcache)

Хранение кэша (фрагменты HTML, результаты API) в оперативной памяти — самый простой путь к утечкам и раздуванию процесса.

Решение: Библиотека diskcache. Она использует SQLite под капотом, позволяя хранить гигабайты кэша на диске с производительностью, близкой к RAM, но не занимая драгоценную оперативную память.

🔗 Ссылка на полную статью

📍 Навигация: Вакансии • Задачи • Собесы

Библиотека питониста

#буст
  • ❤ 13
  • 👍 6
  • 🤔 3
  • 😁 1
More from @pyproglib
  1. Sep 25, 2026🔥 Курс «ИИ для разработчиков» уже стартовал И мы решили открыть первое занятие всем — мож…
  2. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
  3. Sep 19, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  4. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  5. Sep 15, 2026⏱️ Справочник по Big-O в Python Для тех, кто хочет писать не просто работающий, а эффектив…
  6. Sep 14, 2026🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили? Как выб…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →