操作系统如何处理大于内存的python字典?
我有一个Python程序,它会消耗很多内存,主要是用来存储一个字典(dict)。这个字典的作用是给一大堆键分配一个独特的整数值。因为我在处理很大的矩阵,所以我需要一个键和索引之间的对应关系,并且在计算完成后,还能把这些值映射回原来的键。
我觉得这个字典占用的内存最终会超过可用的内存。我在想,这种情况会怎么处理,特别是关于交换空间(swap space)。也许有更好的数据结构可以用来解决这个问题。
4 个回答
2
交换空间是一种内核功能,用户(比如用Python的人)是看不见的。
如果你有一个很大的字典(数据集合),而且不需要一次性加载所有的数据,你可以考虑使用redis,它可能能满足你的需求。或者也可能不能哦 :)
5
如果你的数据量超过了内存的容量,就需要一个数据库。因为当字典的数据量大于内存时,字典的索引性能就不好了。
1
这样做最终会导致交换垃圾,因为哈希表的内存访问方式非常随机。
如果你知道这个映射超出了物理内存的大小,首先可以考虑使用一种存储在硬盘上的数据结构。特别是当你在计算过程中不需要这个数据结构的时候。当哈希表触发交换时,会在哈希表之外也造成一些问题。