模仿Python原生容器的持久性数据结构
项目描述
Rack包含PersistentSet和
当您想使用可能太大而无法适合RAM的集合或映射,或者希望它们持久化到磁盘时(无论是在线(在它们使用时)还是一次(用于加载数据)),可以使用此库。
它使用LMDB或SQLite3作为底层引擎
LMDB是一个小型进程内的“非关系型数据库”,速度非常快。
SQLite3是一个小型进程内的SQL数据库,数据存储在单个文件中,具有明确定义的磁盘布局,并且相当节省空间。
内容在访问时序列化/反序列化为Python原生对象,因此这些结构显然比内存中的对应结构慢。
用法
像使用
在构造时
它们需要接受一个
name参数,表示底层LMDB数据库的位置(前缀)。 对于LMDB,如果需要指定非默认哈希器(默认为SHA256),则可以接受一个
hash参数。 它们可以接受一个 serdes 参数,您可以使用该参数指定非默认的序列化/反序列化器(默认为 Python 的 marshal)。
使用方法
它们必须与上下文管理器一起使用,这是因为由于 Python 的垃圾回收特性,__init__ / __del__ 不足以正确管理数据库的打开/关闭生命周期。
创建新容器(例如,联合、复制)的操作可以接受一个可选的名称参数,允许指定新数据库的位置。
如果您知道您存储的元素大小有限(小于 LMDB 最大键大小),则可以使用 rack.set_small.PersistentSet,它比非小型化版本快约 2 倍,因为减少了一次间接。如果键太大,将发生 lmdb.BadValsizeError 异常。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
构建分发
rack-0.1.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 41a5a6393b65767c4a3432331808d04613a2ef41ef005eb7de50ea9883dc2a70 |
|
MD5 | e0b806ef2b71bcf07b265764df48c6f5 |
|
BLAKE2b-256 | 9c7e9b902229e2b49a824de089c7f09a1a9b44613614c2abfebefa5ab32f761e |
rack-0.1.4-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ce86e01c072588c549a6623155d5c8ad1eca739ce3f32814c35d37c22ca39eb9 |
|
MD5 | 709708d7de9395716a5dd9dd77b1d79f |
|
BLAKE2b-256 | bf30e8ff05ea755f9140c22539d30728597052587798f0e0a1673e31923f9ca6 |