简单磁盘词典
chest的Python项目详细描述
漏到磁盘上的字典。
Chest Acts就像一本字典,但它可以将内容写入磁盘。这是 适用于以下两种情况:
- 胸部可以容纳大于内存的数据集
- 箱子仍然存在,因此可以保存和装载以备以后使用
工作原理
胸部在两个位置存储数据
- 内存字典
- 在文件系统上,该文件系统位于文件箱所拥有的目录中
当用户将内容添加到箱子时,内存中的字典将填满。什么时候? 一个箱子在内存中存储的数据比期望的多(参见available_memory= 关键字参数)它将胸部的较大内容作为pickle写入磁盘 文件(可配置pickle选项)。当用户要求值时 chest检查内存存储,然后检查磁盘并将值加载到 必要时,将其他值推送到磁盘。
胸部是一个简单的项目。它旨在为 协助存储和检索numpy阵列。但是它的设计和 实现与本例无关,因此可以用于 其他情况。
用最少的工作箱可以作为一个沟通点 在多个进程之间。
已知故障
胸部被设计成容纳适量的大核阵列。它 不处理非常多的小键值对用例(尽管可以使用 很小的努力)。尤其是胸部有以下缺陷
- 胸部不是多过程安全的。我们至少应该建立一个文件锁 在.keys文件周围。
- 胸部不支持椎间盘上变量的变异。
许可证
新的疯牛病。见License
安装
chest可通过conda:
conda install chest
chest在python包索引(pypi)上:
pip install chest
示例
>>>fromchestimportChest>>>c=Chest()>>># Acts like a normal dictionary>>>c['x']=[1,2,3]>>>c['x'][1,2,3]>>># Data persists to local files>>>c.flush()>>>importos>>>os.listdir(c.path)['.keys','x']>>># These files hold pickled results>>>importpickle>>>pickle.load(open(c.key_to_filename('x')))[1,2,3]>>># Though one normally accesses these files with chest itself>>>c2=Chest(path=c.path)>>>c2.keys()['x']>>>c2['x'][1,2,3]>>># Chest is configurable, so one can use json, etc. instead of pickle>>>importjson>>>c=Chest(path='my-chest',dump=json.dump,load=json.load)>>>c['x']=[1,2,3]>>>c.flush()>>>json.load(open(c.key_to_filename('x')))[1,2,3]
依赖关系
Chest使用公共代码库支持python 2.6+和python 3.2+。
它目前依赖于heapdict库。
这是一种对体重的依赖。