python学习笔记:当创建大量实例是如何节省内存

2020-02-15  本文已影响0人  潼潼夏

问题

当创建大量(比如百万级)实例,占用了大量内存

解决方案

在类定义中增加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,无法再对实例添加新的属性;不支持某些特定功能,如多重继承。

上一篇下一篇

猜你喜欢

热点阅读