微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python如何使用 __slots__ 来减少内存开支

这篇文章主要介绍了python如何使用 __slots__ 来减少内存开支,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

使用 __slots__ 来减少内存开支

你是否注意到你的 Python 应用占用许多资源特别是内存?有一个技巧是使用 __slots__ 类变量来在一定程度上减少内存开支。

import sys
classFileSystem(object):
def __init__(self,files,folders,devices):
self.files= files
self.folders= folders
self.devices= devices
print(sys.getsizeof(FileSystem))
classFileSystem1(object):
__slots__= [‘files','folders','devices']
def __init__(self,files,folders,devices):
self.files= files
self.folders= folders
self.devices= devices
print(sys.getsizeof(FileSystem1))
#In Python 3.5
#1-> 1016
#2-> 888

很明显,你可以从结果中看到确实有内存使用上的节省,但是你只应该在一个类的内存开销不必要得大时才使用 __slots__。只在对应用进行性能分析后才使用它,不然地话,你只是使得代码难以改变而没有真正的益处。

【译者注:在我的 win10 python2.7 中上面的结果是:

#In Python 2.7 win10
#1-> 896
#2-> 1016

所以,这种比较方式是不那么让人信服的,使用 __slots__ 主要是用以限定对象的属性信息,另外,当生成对象很多时花销可能会小一些,具体可以参见 python 官方文档:

The slots declaration takes a sequence of instance variables and reserves just enough space in each instance to hold a value for each variable. Space is saved because dict is not created for each instance. 】

感谢你能够认真阅读完这篇文章,希望小编分享的“python如何使用 __slots__ 来减少内存开支”这篇文章对大家有帮助,同时也希望大家多多支持编程之家,关注编程之家行业资讯频道,更多相关知识等着你来学习!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐