在我的例子中,我有一个包含大约6000个实例化类的字典,其中每个类都有1000个属性变量,类型都是字符串或字符串列表。当我建立这本字典的时候,我的RAM增长得非常快。有没有办法编写字典,因为它是建立在硬盘驱动器而不是RAM中,以便我可以节省一些内存?我听说过一种叫“泡菜”的东西,但我不知道这对我正在做的事情是不是一个可行的方法。
谢谢你的帮忙!
发布于 2010-08-03 14:41:31
“我有一个大约6000个实例化类的字典,其中每个类都有1000个属性变量,所有类型都是字符串或字符串列表”...我假设你的意思是:“我有一个类,它有大约1000个属性,所有属性的类型都是str或str的list。我有一个字典,将大约6000个未指定类型的键映射到该类的相应实例。”如果这不是一个合理的翻译,请更正它。
首先,一个类中有1000个属性是令人难以置信的。您必须一般地使用value = getattr(obj, attr_name)和setattr(obj, attr_name, value)来处理绝大多数问题。考虑使用字典而不是实例:value = obj[attr_name]和obj[attr_name] = value。
其次,这600万个属性中有多大百分比是""?如果足够高,您可能会考虑使用__missing__钩子-- docs here实现一个稀疏字典,该字典在物理上没有这些属性的条目。
https://stackoverflow.com/questions/3392663
复制相似问题