用sys.getsizeof查看对象占用内存数

2020年6月30日 / 24次阅读 / Last Modified 2020年6月30日
sys模块

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 --

本文链接:https://www.pynote.net/archives/2108

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top