假设我有一个Python对象的id,我通过这个来检索它id(thing).如何thing通过我给出的身份证号码再次找到?
我正在为一组文档上的搜索引擎编写倒排索引.现在,我将索引存储为字典词典.也就是说,每个关键字都映射到docIDs->发生位置的字典.
数据模型类似于:{word:{doc_name:[location_list]}}
在内存中构建索引工作正常,但是当我尝试序列化到磁盘时,我遇到了一个MemoryError.这是我的代码:
# Write the index out to disk
serializedIndex = open(sys.argv[3], 'wb')
cPickle.dump(index, serializedIndex, cPickle.HIGHEST_PROTOCOL)
Run Code Online (Sandbox Code Playgroud)
在序列化之前,我的程序使用大约50%的内存(1.6 Gb).一旦我打电话给cPickle,我的内存使用率在崩溃之前就会猛增至80%.
为什么cPickle使用如此多的内存进行序列化?有没有更好的方法来解决这个问题?