我有大量相同的词典(结构相同:相同的键,不同的值),导致两种不同的内存问题:
字典以指数方式扩展,因此每个字典可以使用最多两倍的内存。
字典需要记录其标签,因此每个字典都存储该字典的密钥,这是一个相当大的内存。
我可以共享标签的好方法是什么(所以每个标签都没有存储在对象中),并压缩内存?
答案 0 :(得分:1)
基于recordclass库,可以为问题提供以下解决方案:
pip install recordclass
>>> from recordclass import make_class
对于给定的标签集,您可以创建一个类:
>>> DataCls = make_class('DataCls', 'first second third')
>>> data = DataCls(first="red", second="green", third="blue")
>>> print(data)
DataCls(first="red", second="green", third="blue")
>>> print('Memory size:', sys.getsizeof(data), 'bytes')
Memory size: 40 bytes
速度快,占用的内存最少。适用于创建数百万个实例。
缺点:它是C扩展名,不在标准库中。但可以在pypi上使用。
P.S .:记录类库的作者在这里。