python释放内存代码,python3内存缓存

  python释放内存代码,python3内存缓存

  我们都知道内存太多会降低电脑的运行速度。在释放内存之前,首先要检查内存占用的具体数量,而不是一味的追求内存优化。只有找到内存占用量,才能根据情况使用不同的内存释放方法。我们来分析一下检测内容占用的情况,然后进一步提出解决问题的代码。

  内存占用检测

  下面的代码块可以检查变量variable所占用的内存。

  importsys

  变量=30

  print(sys.getsizeof(变量))#24

  Python是一个解释器,我们可以随时扩展我们的类,比如增加一个新的字段3360。

  d1=DataItem(Alex ,42,-)

  print(get_size(d1): ,get_size(d1))

  d1 .重量=66

  print(get_size(d1): ,get_size(d1))

  很好,但是如果我们不需要这个功能呢?我们可以强制解释器使用__slots__命令来指定类的列表对象:

  classDataItem(对象):

  __slots__=[姓名,年龄,地址]

  def__init__(自己,姓名,年龄,地址):

  self.name=name

  (=NationalBureauofStandards)国家标准局

  p;self.age=age

  self.address=address


  

  

更多信息可以在文档(RTFM)中找到,其中写到“__ dict__和__weakref__”。使用__dict__节省的空间非常大”。

  

我们确认:是的,确实很重要,get_size (d1)返回…64字节,而不是460字节,即少7倍。另外,创建对象的速度要快20%(请参阅本文的第一个屏幕截图)。

  

  

真正使用如此大的内存增益并不是因为其他开销。通过简单地添加元素,创建一个100,000的数组,并查看内存消耗:

  

data = []
for p in range(100000):
data.append(DataItem("Alex", 42, "middle of nowhere"))
snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')
total = sum(stat.size for stat in top_stats)
print("Total allocated size: %.1f MB" % (total / (1024*1024)))

  

  

我们不使用__slots__占用内存16.8MB,使用时占用6.9MB。这个操作当然不是最好的,但是确实代码改变的最小的。(Not 7 times of course, but it’s not bad at all, considering that the code change was minimal.)

  

以上就是我们解决内存占用的代码方法了,关键还是要先从内存具体占用的情况开始分析,然后再进行下一步的代码操作。更多Python学习指路:PyThon学习网教学中心

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: