获得具有不同功能的不同对象大小

时间:2013-08-08 18:16:20

标签: python python-2.7 size

为什么此代码段使用两个不同的函数提供不同的字节大小。我使用的是32位版本的python 2.7.3

1)使用词典: -

from sys import getsizeof
l = range(20)            
d = {k:v for k,v in enumerate(l)}    #creating a dict
d.__sizeof__()   #gives size in bytes 
508              #size of dictionary 'd' in bytes

getsizeof(d)
524              #size of same dictionary 'd' in bytes (which is different then above)

2)与列表: -

from sys import getsizeof
l = range(20)
l.__sizeof__()   
100           #size of list 'l' in bytes

getsizeof(l)
116           #size of same list 'l' in bytes

3)与元组: -

from sys import getsizeof
t = tuple(range(20))
t.__sizeof__()
92             #size of tuple 't' in bytes

getsizeof(t)
108            #size of same tuple 't' in bytes

当有两个函数的文档说它们以字节为单位返回对象的大小时,有人会告诉我为什么会出现这种行为。

1 个答案:

答案 0 :(得分:4)

来自sys docs

  

getsizeof()调用对象的 sizeof 方法并添加一个   额外的垃圾收集器开销如果对象由管理   垃圾收集器。

我猜这解释了这种差异。