我一直在处理一个涉及从文件中加载相对较大的字典到内存中的项目。该字典有将近200万条目,每个条目(键和值组合)都不到20个字节。磁盘上文件的大小为38 MB。
我的问题是,当我尝试加载字典时,我的程序立即扩展到超过2.5 GB的内存使用量。
这是我用来从磁盘读取字典的代码:
f = open('someFile.txt', 'r')
rT = eval(f.read())
f.close()
我一直在处理一个涉及从文件中加载相对较大的字典到内存中的项目。该字典有将近200万条目,每个条目(键和值组合)都不到20个字节。磁盘上文件的大小为38 MB。
我的问题是,当我尝试加载字典时,我的程序立即扩展到超过2.5 GB的内存使用量。
这是我用来从磁盘读取字典的代码:
f = open('someFile.txt', 'r')
rT = eval(f.read())
f.close()
repr
/eval
会更好。import cPickle
x = {}
for i in xrange(1000000):
x["k%i" % i] = "v%i" % i
cPickle.dump(x, open("data", "wb"), -1)
x = cPickle.load(open("data", "rb"))
-1
在转储时表示使用最新的协议,这更加高效,但可能与旧版本的Python不兼容。是否采用此方法取决于您需要进行转储/加载的原因。