问题
当创建大量(比如百万级)实例,占用了大量内存
解决方案
在类定义中增加slot属性,大量减少对内存的使用。
示例1:
class Date:
__slots__ = ['year','month','day']
def __init__(self, year, month, day):
self.year = year
self.month = month
self.day = day
当定义了slots属性时,python对实例采用更加紧凑的内部表示。不再为每个实例都创建一个dict字典,现在的实例围绕着一个固定长度的小型数组来构建的。在slots中列出的属性名会在内部映射到这个数组的特定索引上。
缺点:使用slots,无法再对实例添加新的属性;不支持某些特定功能,如多重继承。
网友评论