TGViewer
Python for Devs Python for Devs @python_for_devs · 800 subscribers
Post #94 1.31K
🤔 Почему Python иногда «течёт» по памяти — и при чём тут weakref

В Python управление памятью в основном держится на подсчёте ссылок: объект живёт, пока на него есть хотя бы одна сильная ссылка. В большинстве случаев это работает прозрачно, но есть коварные сценарии — циклические ссылки, кэши и списки подписчиков — где объекты начинают жить дольше, чем нужно.

Да, в CPython есть GC, который умеет разрывать циклы. Но он запускается не сразу, работает не бесплатно и не спасает от логических утечек, когда вы сами «держите» объект через кэш или реестр.

Здесь на сцену выходят слабые ссылки (weakref). Они позволяют ссылаться на объект, не продлевая его жизнь. Как только пропадают сильные ссылки — объект удаляется, даже если на него кто-то «смотрит» через weakref.

На практике это даёт несколько очень полезных паттернов:
— автоочищающиеся кэши через WeakValueDictionary
— реестры и singleton-подобные структуры, которые не держат объекты насильно
— списки подписчиков (`WeakSet`), где не нужно вручную отписывать «умершие» объекты
— аккуратную работу с долгоживущими менеджерами и короткоживущими сущностями

Отдельный бонус — callbacks у weakref: можно повесить логику очистки, которая сработает ровно в момент сборки объекта.

📚 Подробнее в нашей новой статье на Хабре.

@python_for_devs
  • 👍 6
  • ❤ 2
  • 🔥 2
More from @python_for_devs
  1. Sep 30, 2026Тут больше не будет новостей, статей и постов про Python. Python-разработчику сейчас важне…
  2. Jan 23, 2026⚰️ 2025 год для Flask прошёл почти без движений За год вышло всего два патч-релиза к верси…
  3. Jan 16, 2026В новой статье разбираем попытку превратить Python в формат распространения уровня «один б…
  4. Jan 13, 2026🔥 Anthropic инвестируют $1.5 млн в Python — и делают ставку на безопасность open source A…
  5. Jan 12, 2026⚡️ DuckDB разрушает мифы: 1 ТБ данных — за секунды, без Spark Принято считать, что терабай…
  6. Dec 29, 2025🎄 Итоги года 4Devs 2025 На прошлой неделе Habr опубликовал итоги года — и наш проект попа…
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 →