成都创新互联网站制作重庆分公司

python3中内存占用怎么用代码解决-创新互联

这篇文章给大家分享的是有关python3中内存占用怎么用代码解决的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

我们提供的服务有:成都网站制作、网站建设、外贸网站建设、微信公众号开发、网站优化、网站认证、义县ssl等。为成百上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的义县网站制作公司

内存占用检测

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

import sys 
 
variable = 30 
print(sys.getsizeof(variable)) # 24

Python是一个解释器,我们可以在任何时候扩展我们的类,例如,添加一个新的字段:

d1 = DataItem("Alex", 42, "-")
print ("get_size(d1):", get_size(d1))
d1.weight = 66
print ("get_size(d1):", get_size(d1))

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

class DataItem(object):
   __slots__ = ['name', 'age', 'address']
   def __init__(self, name, age, address):
       self.name = name
       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.)

感谢各位的阅读!关于python3中内存占用怎么用代码解决就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!


标题名称:python3中内存占用怎么用代码解决-创新互联
本文地址:http://cxhlcq.com/article/disejc.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部