Ce face sys.getsizeof(), getrefcount(), intern() și alte funcții de memorie
getsizeof(x) returnează mărimea obiectului în octeți, fără obiectele pe care le conține: o listă de texte include doar spațiul pentru referințe, nu și textele. getrefcount(x) dă numărul de referințe către obiect (plus una temporară, pentru argument).
intern(text) păstrează o singură copie a unui text în memorie, astfel încât compararea textelor internate cu is să fie instantanee; este utilă pentru multe texte repetate (chei). getallocatedblocks() și getunicodeinternedsize() sunt pentru depanarea consumului de memorie al interpretorului. Valorile depind de versiune și platformă.
Parametri
| Parametru | Descriere |
|---|---|
obiect / text |
Obiectul analizat. |
Ce returnează
Întregi; intern: textul internat.
Exemple
Exemplul 1: Mărimi în memorie (CPython 3.14, 64 de biți)
import sys
print(sys.getsizeof(0), sys.getsizeof(2 ** 100))
print(sys.getsizeof(""), sys.getsizeof("abc"), sys.getsizeof("ăîș"))
print(sys.getsizeof([]), sys.getsizeof([1, 2, 3]), sys.getsizeof(["x" * 1000]))
print(sys.getsizeof((1, 2, 3)), sys.getsizeof({}))
Rezultat
28 40
41 44 64
56 88 64
72 64
Exemplul 2: Referințe și texte internate
import sys
date = [1, 2]
inainte = sys.getrefcount(date)
alias = date
print(sys.getrefcount(date) - inainte)
a = sys.intern("".join(["cheie_", "lunga"]))
b = sys.intern("cheie_lunga")
print(a is b, sys.getallocatedblocks() > 0, sys.getunicodeinternedsize() > 0)
Rezultat
1
True True True
Greșeli frecvente
- Măsori memoria unei liste mari cu
getsizeofși uiți elementele. Adună și mărimile elementelor, sau foloseștetracemalloc.
Comenzi înrudite
id(): Returnează identitatea unui obiect: un număr unic cât timp obiectul există.is / is not: Verifică dacă două nume arată spre exact același obiect din memorie.memoryview(): Oferă acces la memoria unui obiect binar (bytes, bytearray) fără să o copieze.