跳转到主要内容

持久缓存到内存、磁盘或数据库

项目描述

关于Klepto

klepto 扩展了 Python 的 lru_cache,使其能够使用不同的键映射和备选缓存算法,如 lfu_cachemru_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 的最新发布版本可在以下位置获取

https://pypi.ac.cn/project/klepto

klepto 在 3 条条款 BSD 许可证下分发。

开发版本

您可以在以下位置获取具有所有最新功能的最新开发版本

https://github.com/uqfoundation

如果您有新的贡献,请提交一个 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/pathoshttp://arxiv.org/pdf/1202.1056 获取更多信息。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

klepto-0.2.6.tar.gz (158.6 kB 查看散列)

上传时间 源代码

构建分发

klepto-0.2.6-py3-none-any.whl (82.1 kB 查看散列)

上传时间 Python 3

由以下支持