python-开放类优化内存性能
开放类:在运行期间,可动态向实例或类添加新成员,方法
1.实例不能添加方法到类,反之可以
class A: pass a = A() a.func = lambda x: x+1 a.func # <function <lambda>> A.func # AttributeError: type object 'A' has no attribute 'func'
2.object类,不能添加任何成员,也没有普通类的__dict__方法
2.1SimpleNamespace简单继承object,其作用用来代替 class X: pass 语句
import types
o = types.SimpleNamespace(a=1,b=2)
print(o.__dict__)
o.c=3
print(o.__dict__) >>>
{'a': 1, 'b': 2}
{'a': 1, 'b': 2, 'c': 3}
3. __slots__类属性,用来处理 内存和性能 问题
对于需要创建海量实例的类来说,可以通过设置__slots__,阻止实例(类依然可以添加方法)创建__dict__等成员。解释器只为__slots__指定的成员分配空间。
class A:
__slots__ = ['x','y'] # only two members
>>>
>>> a = A()
>>> a.x = lambda x:x+1
>>> a.y = 2
>>> print(a.x(3))
>>> print(A.__dict__) # 实例a 没有__dict__属性了
# 结果
4
{'__module__': '__main__', '__slots__': ['x', 'y'], 'x': <member 'x' of 'A' objects>, 'y': <member 'y' of 'A' objects>, '__doc__': None} >>> a.z=3
# AttributeError: 'A' object has no attribute 'z'
继承拥有__slots__属性的类,依然需要指定__slots__为空,或新增某些属性
--------------------------------------------------------------------------------------------
因为__slots__阻止了实例创建__dict__等成员,所以对于需要大量实例化的类来讲,就节约了大量的内存
python-开放类优化内存性能的更多相关文章
- 十条服务器端优化Web性能的技巧
服务器 远程桌面连接工具 提高web应用的性能从来没有比现在更重要过.网络经济的比重一直在增长;全球经济超过5%的价值是在因特网上产生的(数据参见下面的资料).这个时刻在线的超连接世界意味着用户对其 ...
- [python]用profile协助程序性能优化
转自:http://blog.csdn.net/gzlaiyonghao/article/details/1483728 本文最初发表于恋花蝶的博客http://blog.csdn.net/lanph ...
- 记一次vue长列表的内存性能分析和优化
好久没写东西,博客又长草了,这段时间身心放松了好久,都没什么主题可以写了 上周接到一个需求,优化vue的一个长列表页面,忙活了很久也到尾声了,内存使用和卡顿都做了一点点优化,还算有点收获 写的有点啰嗦 ...
- Android性能优化-内存优化
原文链接 Manage Your App’s Memory 前言 在任何软件开发环境中,RAM都是比较珍贵的资源.在移动操作系统上更是这样,因为它们的物理内存通常受限.尽管在ART和Dalvik虚拟机 ...
- Qualcomm_Mobile_OpenCL.pdf 翻译-7 内存性能优化
内存优化是最重要也是最有效的OpenCL性能优化技术.大量的应用程序是内存限制而不是计算限制.所以,掌握内存优化的方法是OpenCL优化的基础.在这章中,将会回顾OpenCL的内存模型,然后是最优的实 ...
- 在ASP.NET Core中用HttpClient(四)——提高性能和优化内存
到目前为止,我们一直在使用字符串创建请求体,并读取响应的内容.但是我们可以通过使用流提高性能和优化内存.因此,在本文中,我们将学习如何在请求和响应中使用HttpClient流. 什么是流 流是以文件. ...
- Android性能优化之巧用软引用与弱引用优化内存使用
前言: 从事Android开发的同学都知道移动设备的内存使用是非常敏感的话题,今天我们来看下如何使用软引用与弱引用来优化内存使用.下面来理解几个概念. 1.StrongReference(强引用) 强 ...
- [daily][optimize] 一个小python程序的性能优化 (python类型转换函数引申的性能优化)
前天,20161012,到望京面试.第四个职位,终于进了二面.好么,结果人力安排完了面试时间竟然没有通知我,也没有收到短信邀请.如果没有短信邀请门口的保安大哥是不让我进去大厦的.然后,我在11号接到了 ...
- Citrix 服务器虚拟化之十三 Xenserver虚拟机内存优化与性能监控
Citrix 服务器虚拟化之十三 Xenserver虚拟机内存优化与性能监控 XenServer的DMC通过自动调节运行的虚拟机的内存,每个VM分配给指定的最小和最大内存值之间,以保证性能并允许每 ...
随机推荐
- Uedit编辑器编辑Velocity
1.切换到源代码模式 UM.getEditor('editor').execCommand("source"); 2.给编辑器插入Velocity源码 $(".edui- ...
- Linux之用户组、文件权限详解
用户和用户组 文件所有者(u) 一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者 用ls ‐ahl命令可以看到文件的所有者 也可以使用chown 用户名 文件名来修改文件的所有者 用户组 ...
- dragino2 ar9331将LED管脚当做普通gpio使用
1. 将gpio13和gpio17也当作普通gpio使用,修改 target/linux/ar71xx/files/arch/mips/ath79/mach-dragino2.c文件如下 /* * D ...
- jQuery介绍 常用选择器
jquery现在三个版本, 1.x 2.x 3.x 都在用,越小的版本兼容性越好,ie8以下浏览器也支持,新功能不多.我们通常使用1.x 在html中,css放Head中,js放body尾部 j ...
- zabbix 监控报警详细邮件内容
AlarmHost:{HOSTNAME1} AlarmTime:{EVENT.DATE} {EVENT.TIME} AlarmLevel:{TRIGGER.SEVERITY} AlarmMessige ...
- Variant <-->Record Variant <-->Stream
// TARec ---> Variantfunction RecordToVariant(value:TParamRecord):OleVariant;var P:Pointe ...
- 配置 influxDB 鉴权及 HTTP API 写数据的方法
本文简要描述如何为 InfluxDB 开启鉴权和配置用户管理权限(安装后默认不需要登录),以及开启鉴权后如何使用 HTTP API 写数据. 创建 InfluxDB 管理员账号创建 admin 帐号密 ...
- [Android] JNI中的Local Reference
参考文章:<在 JNI 编程中避免内存泄漏> 一.Local Reference 深层解析 JNI Local Reference 的生命期是在 native method 的执行期(从 ...
- 研究js特效巩固JavaScript知识
400多个JavaScript特效大全,包含全部源代码和详细代码说明,不可多得 JavaScript实现可以完全自由拖拽的效果,带三个范例 http://www.sharejs.com/show ...
- 黄聪:PHP发送邮件出现Connection: opening to ssl://的解决办法
PHP.ini文件开启下面2个功能: extension=php_sockets.dll extension=php_openssl.dll