python 百万级别类实例实现节省内存
# 案例: ''' 某网络游戏中,定义了玩家类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 = status p = 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 sys print(sys.getsizeof(p1.__dict__)) # 打印出p1.__dict__占用内存大小 """ 实例p1可以动态生成属性,而p则不行,实现阻止动态绑定 """ p1.x = 1 p1.__dict__['y'] = 2 print(p1.__dict__) # p.x = 1 # p.__dict__['y'] = 2