【发布时间】:2010-10-14 20:36:03
【问题描述】:
我正在用 Python (2.6) 编写一个应用程序,需要我使用字典作为数据存储。
我很好奇拥有一个大字典是否更节省内存,或者将其分解为许多(很多)较小的字典,然后拥有一个包含对所有较小字典的引用的“索引”字典字典。
我知道列表和字典通常会产生很多开销。我在某处读到,python 在内部分配了足够的空间,字典/列表项的数量是 2 的幂。
我对 python 还很陌生,所以我不确定是否还有其他类似的意外内部复杂性/惊喜,这对于我应该考虑的普通用户来说并不明显。
其中一个困难是知道 2 系统的力量如何计算“项目”?每个 key:pair 是否计为 1 个项目?知道这一点似乎很重要,因为如果您有一个 100 项的整体字典,那么将分配 100^2 项空间。如果您有 100 个单项字典(1 个键:对),那么每个字典只会分配 1^2(也就是没有额外分配)?
任何明确列出的信息都会非常有帮助!
【问题讨论】:
-
更新:我知道它的实际数据量是相同的。但这更多是蟒蛇内部机制的问题。有没有办法玩弄它的分配系统,让一种方法比另一种更有效?
-
您为什么要做出这个决定?你试过一本大字典吗?你没记忆了?是不是太慢了?在某些东西被破坏(即不起作用)之前,这听起来像是过早的优化。
-
我敢肯定现在担心还为时过早。但我希望有一种公认的“最有效”的方式,并希望从公认的方式开始,这样如果它不能满足我的需求,我就不必进行重大重写。
标签: python memory dictionary performance