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

2020年6月30日 / 47次阅读 / 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

留言区

《用sys.getsizeof查看对象占用内存数》有2条留言

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

  • 麦新杰

    存放同样的数据,tuple比list占用内存要小一些。 [回复]

    • 麦新杰

      >>> f=open('bigfile.txt')
      >>> a = f.readlines()
      >>> len(a)
      5000000
      >>> import sys
      >>> sys.getsizeof(a)
      42915448
      >>> sys.getsizeof(a)/(1024*1024)
      40.92736053466797
      >>> sys.getsizeof(tuple(a))/(1024*1024)
      38.14701843261719
       [回复]


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top