跳转到主要内容

缓存对大型文件树的操作结果

项目描述

CI Status https://codecov.io/gh/con/fscacher/branch/master/graph/badge.svg https://img.shields.io/pypi/pyversions/fscacher.svg MIT License

GitHub | PyPI | 问题 | 变更日志

fscacher 提供了一个用于缓存函数输出的缓存和装饰器,这些函数的输出取决于文件参数的内容。

如果您有一个函数 foo(),它以文件路径作为第一个参数,并且如果 foo() 的行为在路径的 内容 和其他参数的值方面是纯的,那么 fscacher 可以帮助缓存该函数,如下所示

from fscacher import PersistentCache

cache = PersistentCache("insert_name_for_cache_here")

@cache.memoize_path
def foo(path, ...):
    ...

现在,foo() 的输出将被缓存,针对每一组输入参数以及每个 path 的“指纹”(时间戳和大小)。如果用相同的参数集两次调用 foo(),则第一次调用的结果将被用于第二次调用,除非指向 path 的文件发生变化,在这种情况下,函数将再次运行。如果用非 path-like object 作为 path 的值调用 foo(),则忽略缓存。

memoize_path() 可选地接受一个 exclude_kwargs 参数,该参数必须是装饰函数要忽略缓存目的的参数名称序列。

缓存存储在磁盘上,因此会在 Python 运行之间持久化。要清除特定的 PersistentCache 并擦除其数据存储,请调用 clear() 方法。

默认情况下,缓存存储在用户级缓存目录下的 fscacher 特定文件夹中,每个缓存通过构造函数传递的名称进行识别(如果没有指定,默认为“cache”)。要指定不同的位置,请使用构造函数的 path 参数而不是传递一个名称。

cache = PersistentCache(path="/my/custom/location")

如果你的代码在可能在不同运行中使用不同集合的库或类似的环境中运行,并且这些会影响你的函数输出,你可以通过将当前运行的库版本字符串或其他标识符列表作为 token 参数传递给 PersistentCache 构造函数,使缓存考虑它们。

最后,PersistentCache 的构造函数还可以可选地接受一个 envvar 参数,该参数是环境变量的名称。如果在构建缓存时将该环境变量设置为“clear”,则在初始化结束时将调用缓存的 clear() 方法。如果设置为“ignore”,则禁用缓存,并且缓存的 memoize_path 方法将是一个空操作。如果没有设置给定环境变量,或者没有指定 envvar,则 PersistentCache 将查询 FSCACHER_CACHE 环境变量。

安装

fscacher 需要 Python 3.7 或更高版本。只需使用 Python 3 的 pip 安装它及其依赖项即可(你有 pip,对吧?)

python3 -m pip install fscacher

项目详情


下载文件

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

源分布

fscacher-0.4.1.tar.gz (34.7 kB 查看哈希)

上传时间

构建分布

fscacher-0.4.1-py3-none-any.whl (12.1 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面