python sys模块的getsizeof函数,可以得到对象的内存占用数量,in bytes。
>>>import sys
>>> sys.getsizeof([1,2,3,4,5,6])
112
>>> sys.getsizeof((1,2,3,4,5,6))
96
>>> sys.getsizeof('123456')
55
>>> sys.getsizeof(123456)
28
>>> sys.getsizeof(1.23456)
24
list对象比tuple更消耗内存。
>>> d = {'1':1,'2':2,'3':3,'4':4,'5':5,'6':6}
>>> sys.getsizeof(d)
368
>>> s = set((1,2,3,4,5,6))
>>> s
{1, 2, 3, 4, 5, 6}
>>> sys.getsizeof(s)
736
看起来set对象比dict对象还要占内存,同样存放6条记录,set对象占用内存是dict的一倍。但它们都比list还要多。
所以,如果你的python程序占用内存太多,能用tuple的地方,就别用list!
还有,可以考虑使用generator来减少内存占用。
>>> a = [x for x in range(100)]
>>> sys.getsizeof(a)
912
>>> b = (x for x in range(100))
>>> sys.getsizeof(b)
120
b是一个generator。
-- EOF --