25 AĞUSTOS 2009, Salı
Bellek Python bir yapı boyutu
32 - ve 64-bit platformlarda Python veri yapıları, bellek boyutu için bir referans var mı?
Bu ÇOK güzel olurdu. Daha geniş daha iyi! Kaç bayt aşağıdaki Python yapıları (len
ve ilgili içerik türüne bağlı olarak) tarafından kullanılıyor.
int
float
- başvuru
str
- unicode dize
tuple
list
dict
set
array.array
numpy.array
deque
- yeni-stil sınıfları nesne
- eski tip sınıflar nesne
- ... ve her şeyi unutuyorum!
(Diğer nesneler için sadece başvurular devam konteynerler için, biz açıkça paylaşılmış olabilir beri, madde boyutunu kendilerini saymak istemiyorum.)
Bellek çalışma zamanında bir nesne (ardışık ya da değil) tarafından kullanılan almak için bir yol var mıdır?
CEVAP
25 AĞUSTOS 2009, Salı
Bu an earlier question öneri sys.getsizeof(), alıntı kullanmak için:
>>> import sys
>>> x = 2
>>> sys.getsizeof(x)
14
>>> sys.getsizeof(sys.getsizeof)
32
>>> sys.getsizeof('this')
38
>>> sys.getsizeof('this also')
48
Bu yaklaşım alabilir:
>>> import sys
>>> import decimal
>>>
>>> d = {
... "int": 0,
... "float": 0.0,
... "dict": dict(),
... "set": set(),
... "tuple": tuple(),
... "list": list(),
... "str": "a",
... "unicode": u"a",
... "decimal": decimal.Decimal(0),
... "object": object(),
... }
>>> for k, v in sorted(d.iteritems()):
... print k, sys.getsizeof(v)
...
decimal 40
dict 140
float 16
int 12
list 36
object 8
set 116
str 25
tuple 28
unicode 28
2012-09-30
python 2.7, 32-bit linux ():
decimal 36
dict 136
float 16
int 12
list 32
object 8
set 112
str 22
tuple 24
unicode 32
python 3.3, 32-bit linux ()
decimal 52
dict 144
float 16
int 14
list 32
object 8
set 112
str 26
tuple 24
unicode 26
Bunu Paylaş:
Neden't bir yapı her üyenin boyut...
Ölümcül Hata: Bellek Boyutu 134217728 ...
33554432 bayt bellek boyutu bitkin (43...
Nasıl açıkça Python boş bellek miyim?...
Toplam bellek Python süreç tarafından ...