Update a dictionary stored with cPickle without loading it into RAM
有一个循环运行很长时间,每次迭代都会创建数据。由于数据在一段时间后会填满RAM,所以我认为最好将其存储在磁盘上。我首先想到的是使用cpickle将数据保存为二进制文件。
这是详细的计划。每次迭代之后,新数据都会被附加到一个以迭代计数为键的字典中。这本词典随后被写入磁盘。在每次迭代中重复该过程。问题是我不知道如何更新磁盘上的文件。我知道的唯一解决方案是重新加载字典,附加新数据,然后写回。但最后,这种方法毫无意义,因为每次都必须将字典加载到内存中。
那么,是否有一种方法可以更新使用cpickle存储的字典,而不必再次将其内容加载到RAM中?或者是否存在其他方法来完成这项任务?
这就是为什么https://docs.python.org / 2 /图书馆/ shelve.html所创建的。它是一种通过密钥磁盘上的泡菜。