持久缓存到内存、磁盘或数据库
项目描述
关于Klepto
klepto 扩展了 Python 的 lru_cache,使其能够使用不同的键映射和备选缓存算法,如 lfu_cache 和 mru_cache。虽然缓存是为了快速访问已保存的结果,但 klepto 还具有归档功能,用于长期存储。 klepto 使用简单的字典风格接口为所有缓存和归档,并且所有缓存都可以作为装饰器应用于任何 Python 函数。键映射是将函数的输入签名转换为唯一字典的算法,其中函数的结果是字典值。因此对于 y = f(x),y 将存储在 cache[x] 中(例如 {x:y})。
klepto 提供标准缓存和“安全”缓存,其中“安全”缓存速度较慢,但可以从哈希错误中恢复。klepto 旨在用于分布式和并行计算,其中多个键映射序列化存储对象。缓存和归档旨在可以从不同的线程和进程中读写访问。klepto 允许用户装饰一个函数,将结果保存到文件或数据库归档中,关闭解释器,启动一个新的会话,并重新加载函数及其缓存。
klepto 是 pathos 的一部分,pathos 是一个用于异构计算的 Python 框架。klepto 正在积极开发中,因此任何用户的反馈、错误报告、评论或建议都备受欢迎。问题列表位于 https://github.com/uqfoundation/klepto/issues,而历史列表维护在 https://uqfoundation.github.io/project/pathos/query。
主要功能
klepto 以下功能的标准化和“安全”版本
lfu_cache - 最不常用缓存算法
lru_cache - 最不常用缓存算法
mru_cache - 最常用缓存算法
rr_cache - 随机替换缓存算法
no_cache - 一个模拟归档的空缓存接口
inf_cache - 无限增长的缓存
klepto 有以下归档类型
file_archive - 文件的字典式接口
dir_archive - 文件夹的字典式接口
sqltable_archive - SQL 数据库表的字典式接口
sql_archive - SQL 数据库的字典式接口
hdfdir_archive - hdf5 文件夹的字典式接口
hdf_archive - hdf5 文件的字典式接口
dict_archive - 具有归档接口的字典
null_archive - 模拟归档的字典式接口
klepto 提供以下键映射
keymap - 键是原始 Python 对象
hashmap - 键是 Python 对象的哈希值
stringmap - 键是 Python 对象的字符串表示
picklemap - 键是序列化的 Python 对象
klepto 还包括一些有用的装饰器,提供以下功能
简单、浅或深函数参数舍入
密码学密钥生成,并遮蔽所选参数
当前版本
klepto 的最新发布版本可在以下位置获取
klepto 在 3 条条款 BSD 许可证下分发。
开发版本
您可以在以下位置获取具有所有最新功能的最新开发版本
如果您有新的贡献,请提交一个 pull request。
安装
klepto 可以使用 pip 安装
$ pip install klepto
要在安装中包含可选的归档后端,例如 HDF5 和 SQL
$ pip install klepto[archives]
要在安装中包含可选序列化程序,例如 jsonpickle
$ pip install klepto[crypto]
需求
klepto 需要以下依赖
python (或 pypy), >=3.8
setuptools, >=42
dill, >=0.3.8
pox, >=0.3.4
可选依赖
h5py, >=2.8.0
pandas, >=0.17.0
sqlalchemy, >=1.4.0
jsonpickle, >=0.9.6
cloudpickle, >=0.5.2
更多信息
开始使用 klepto 的最佳方式可能是查看http://klepto.rtfd.io 的文档。还可以查看 klepto.tests 以了解测试 klepto 中缓存和归档功能的一组脚本。您可以使用 python -m klepto.tests 运行测试套件。源代码也通常有很好的文档,因此您可以通过检查代码本身来解决进一步的问题。请随时在 github 上提交问题,或在 stackoverflow 上提问(@Mike McKerns)。如果您想分享如何在工作中使用 klepto,请发送电子邮件(至 mmckerns at uqfoundation dot org)。
引用
如果您使用 klepto 进行研究并发表成果,我们要求您在出版物中引用以下内容以认可 klepto 的使用
Michael McKerns and Michael Aivazis, "pathos: a framework for heterogeneous computing", 2010- ; https://uqfoundation.github.io/project/pathos
请参阅https://uqfoundation.github.io/project/pathos 或 http://arxiv.org/pdf/1202.1056 获取更多信息。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源代码分发
构建分发
klepto-0.2.6.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | a59b3b36a6a0f0155c373f20326790b0f96eddb981e7cbe2482024f2b94ca75c |
|
MD5 | f056862fd0a267e6f823c8cfc3f6950c |
|
BLAKE2b-256 | 95c3d222e945ece432e8cad44fbd31f20dc8f8aca911775e9c538167e0016db4 |
klepto-0.2.6-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 77643c143b41581846c7cef3d6981db28c52b1647b2a6ab4f16f5794601ce313 |
|
MD5 | 8d9ad89dae2bce9076c4559e126719f9 |
|
BLAKE2b-256 | 71273694f0058d1e6adbed48069411e3c3cf2a902e2b89b7837d26c4d4345852 |