PYPROGLIB Telegram 6776
This media is not supported in your browser
VIEW IN TELEGRAM
♻️ Garbage Collector в Python — как он реально работает

Python сам управляет памятью, но делает это не одним, а двумя способами одновременно:

1⃣ Подсчёт ссылок (Reference Counting)

Каждый объект в Python хранит число ссылок на себя:
import sys

a = []
print(sys.getrefcount(a)) # покажет количество ссылок на объект


📝 Когда ссылок становится 0 — объект немедленно удаляется, и память освобождается.
Быстро и просто.

❗️ Проблема: не справляется с циклическими ссылками:
a = []
a.append(a) # теперь объект содержит ссылку на себя


2⃣ Поколенческий сборщик мусора (Generational GC)

Чтобы находить такие циклы, Python использует модуль gc. Все объекты отслеживаются по «возрасту»:
📝 Поколение 0 — новые объекты
📝 Поколение 1 — выжили после первой сборки
📝 Поколение 2 — считаются «старожилами»

Чем старше объект, тем реже его проверяют, чтобы не тратить ресурсы:
import gc

gc.collect() # вручную запустить сборку мусора
gc.get_count() # сколько объектов в каждом поколении
gc.get_threshold() # когда запускать сборку


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

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4🔥2



tgoop.com/pyproglib/6776
Create:
Last Update:

♻️ Garbage Collector в Python — как он реально работает

Python сам управляет памятью, но делает это не одним, а двумя способами одновременно:

1⃣ Подсчёт ссылок (Reference Counting)

Каждый объект в Python хранит число ссылок на себя:

import sys

a = []
print(sys.getrefcount(a)) # покажет количество ссылок на объект


📝 Когда ссылок становится 0 — объект немедленно удаляется, и память освобождается.
Быстро и просто.

❗️ Проблема: не справляется с циклическими ссылками:
a = []
a.append(a) # теперь объект содержит ссылку на себя


2⃣ Поколенческий сборщик мусора (Generational GC)

Чтобы находить такие циклы, Python использует модуль gc. Все объекты отслеживаются по «возрасту»:
📝 Поколение 0 — новые объекты
📝 Поколение 1 — выжили после первой сборки
📝 Поколение 2 — считаются «старожилами»

Чем старше объект, тем реже его проверяют, чтобы не тратить ресурсы:
import gc

gc.collect() # вручную запустить сборку мусора
gc.get_count() # сколько объектов в каждом поколении
gc.get_threshold() # когда запускать сборку


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

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

BY Библиотека питониста | Python, Django, Flask


Share with your friend now:
tgoop.com/pyproglib/6776

View MORE
Open in Telegram


Telegram News

Date: |

Users are more open to new information on workdays rather than weekends. A vandalised bank during the 2019 protest. File photo: May James/HKFP. Find your optimal posting schedule and stick to it. The peak posting times include 8 am, 6 pm, and 8 pm on social media. Try to publish serious stuff in the morning and leave less demanding content later in the day. Those being doxxed include outgoing Chief Executive Carrie Lam Cheng Yuet-ngor, Chung and police assistant commissioner Joe Chan Tung, who heads police's cyber security and technology crime bureau. Among the requests, the Brazilian electoral Court wanted to know if they could obtain data on the origins of malicious content posted on the platform. According to the TSE, this would enable the authorities to track false content and identify the user responsible for publishing it in the first place.
from us


Telegram Библиотека питониста | Python, Django, Flask
FROM American