从磁盘加载的Python字典在内存中占用太多空间

时间:2014-05-14 16:55:13

标签: python file-io pickle

我在磁盘上腌制了一个字典,大小约为780 Megs(在磁盘上)。但是,当我将该字典加载到内存中时,其大小意外膨胀到大约6千兆字节。无论如何还要保持内存中实际文件大小的大小,(我的意思是如果它在内存中需要大约1演出,但是6演出是一种奇怪的行为)。 pickle模块有问题,还是应该以其他格式保存字典?

以下是我加载文件的方式:

import pickle

with open('py_dict.pickle', 'rb') as file:
    py_dict = pickle.load(file)

任何想法,帮助,将不胜感激。

2 个答案:

答案 0 :(得分:6)

如果您仅使用pickle将大值存储在字典中,或者使用大量密钥,则应考虑使用shelve代替。

import shelve
s=shelve.open('shelve.bin')
s['a']='value'

仅在需要时加载每个键/值,其余的保留在磁盘上

答案 1 :(得分:1)

使用SQL将所有数据存储到数据库中,并使用有效的查询来访问它。