SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Adams

    Bryan Adams

    30 Mart 2006
  • Fuse

    Fuse

    21 Kasım 2005
  • MyTiredBones

    MyTiredBones

    2 Temmuz 2013