如图所示。 5亿条记录仅占用404M内存,为什么?由于一条记录占用83字节,因此5000万条记录应该占用3967M内存。
>>> import sys
>>> a=[]
>>> for it in range(5*10**7):a.append("miJ8ZNFG9iFqiQQohvyTWwqsij2rJCiZ7v"+str(it))
...
>>> print(sys.getsizeof(a)/1024**2)
404.4306411743164
>>> print(sys.getsizeof("miJ8ZNFG9iFqiQQohvyTWwqsij2rJCiZ7v"))
83
>>> print(83*5*10**7/1024**2)
3957.7484130859375
>>>
答案 0 :(得分:3)
RewriteEngine On
RewriteRule (^|/)folderName(/|$) - [F]
仅报告sys.getsizeof
本身的成本,而不报告其内容。因此,您会看到存储list
对象标头的成本,加上(略多于)50M指针;您可能使用的是64位(八字节)指针系统,因此50M指针的存储空间约为400 MB。要获取真实大小,将需要递归地为每个对象,每个对象的list
(如果适用)等调用sys.getsizeof
,并且由于某些对象(例如,小型__dict__
)可能会共享; this is not a rabbit hole you want to go down。