博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 百万级别类实例实现节省内存
阅读量:6968 次
发布时间:2019-06-27

本文共 983 字,大约阅读时间需要 3 分钟。

# 案例:'''某网络游戏中,定义了玩家类Player(id,name,status)每当有一个玩家,就会在服务器创建一个Player实例当在线人数过多时,将产生大量实例(百万级别),消耗内存如何降低这些实例的大量实例的内存开销?解决方案:定义类的 __slots__属性,它是用来声明实例属性名字的列表'''class Player(object):    __slots__ = ['name', 'id', 'status']    def __init__(self, name, id, status):        self.name = name        self.id = id        self.status = status    def test(self):        print(self.name)        print(self.id)        print(self.status)class Player1(object):    def __init__(self, name, id, status):        self.name = name        self.id = id        self.status = statusp = Player("Li", '111', '10')p.test()p1 = Player1("Li", '111', '10')print(dir(p1))print(dir(p))print(set(dir(p1)) - set(dir(p)))  # 求两个实例的差集   p1比p多了  {'__weakref__', '__dict__'}      其__dict__占用大量内存import sysprint(sys.getsizeof(p1.__dict__))  # 打印出p1.__dict__占用内存大小"""实例p1可以动态生成属性,而p则不行,实现阻止动态绑定"""p1.x = 1p1.__dict__['y'] = 2print(p1.__dict__)# p.x = 1# p.__dict__['y'] = 2

 

转载于:https://www.cnblogs.com/jum-bolg/p/10965372.html

你可能感兴趣的文章
ASP.Net定时任务执行
查看>>
约瑟夫环形链表问题、丢手帕问题、剑指offer圆圈中最后一个数问题
查看>>
微服务系列(七):将单体应用改造为微服务
查看>>
Centos 配置
查看>>
promise
查看>>
es6学习1: 模拟react Comopnent类的实现
查看>>
js继承问题
查看>>
201621123069 《Java程序设计》第十一周学习总结
查看>>
Java进阶篇(一)——接口、继承与多态
查看>>
linux c 链接详解4-共享库
查看>>
冲刺阶段第七天
查看>>
linux下磁盘分区
查看>>
快速获取表的记录数
查看>>
JavaScript_BOM_window
查看>>
Hadoop:The Definitive Guid 总结 Chapter 7 MapReduce的类型与格式
查看>>
WCF 入门之旅(4): 怎样用客户端调用WCF服务
查看>>
oracle12之 多租户容器数据库架构
查看>>
POJ3061 ZOJ3123 Subsequence【前缀和+二分搜索+尺取法】
查看>>
png库结合zlib库使用出现的一个链接问题的解决
查看>>
Hibernate总结(二)
查看>>