跳到主要内容

CacheFile

源码

cache = CacheFile(
cache_dir: str | os.PathLike | TempDir | None,
chunk_size: int = 1,
)

基于临时目录的缓存实现。

不同于形如CachePlainCacheQueue的、基于内存的缓存,该缓存CacheFile纯粹是通过文件I/O实现的。故此,该缓存无法自动删除过期的文件。用户需要自行处理对这些临时文件的维护。

不过,当程序的退出事件被atexit捕获到时,整个临时文件夹都会被删除。

别名

该类可以通过以下方法取得。

import dash_file_cache as dfc


dfc.CacheFile
dfc.caches.CacheFile
dfc.caches.memory.CacheFile

参数

参数类型必选
说明
cache_dirstr | os.PathLike | TempDir | None该缓存使用的临时目录的路径。
若该值的类型为strPathLike,则cache_dir直接作为临时目录的路径。这表明该目录由CacheFile维护,路径则会被转化为TempDir
若该值的类型为TempDir,这表明该缓存正在与其他缓存共享临时目录。
若该值为None,则会透过tempfile.mkdtemp创建一个临时目录,且CacheFile会为该目录创建TempDir,由TempDir维护该临时目录。
chunk_sizeint保存大体量文件时,所用的文件块尺寸。数值单位为MB

方法

key_to_path

path: str = cache.key_to_path(key: str)

给定文件在缓存中的关键字,返回不带扩展名的文件路径。

输入

参数类型必选
说明
keystr缓存字典项的关键字。

输出

参数类型
说明
pathstrkey查询所得的、缓存字典项对应的基本路径。

is_in

flag: bool = cache.is_in(key: str)

检查key是否注册在了缓存中。

运算符__contains__委托给了该方法。

输入

参数类型必选
说明
keystr要验证的关键字。

输出

参数类型
说明
flagbool若取值True,则表明key给定的值存在于缓存中。

remove

info: CachedFileInfo = cache.remove(key: str)

指定某缓存字典项,将其从缓存中移出为信息。

调用该方法、蕴含了数据结束生命周期的断言。调用后,只有缓存数据的信息仍然可用。

输入

参数类型必选
说明
keystr将要从缓存中移除的数据的关键字。

输出

参数类型
说明
infoCachedFileInfo从缓存中所查询到的数据、对应的轻量化信息。

dump

cache.dump(key: str, info: CachedFileInfo, data: CachedData)

向缓存中置入数据。

输入

参数类型必选
说明
keystr新数据的关键字。若该关键字key已存在于缓存中,则替换原值。
infoCachedFileInfo要写入缓存中数据的轻量化信息。
dataCachedData要写入缓存中的数据。

load

info, data_loader = cache.load(key: str)

透过某关键字,读取对应的元数据。

输入

参数类型必选
说明
keystr要更改变数据的关键字。若该关键字key未找到,抛出FileNotFoundError

输出

参数类型
说明
infoCachedFileInfo从缓存中所查询到的数据、对应的轻量化信息。
data_loaderCallable[[], CachedData]缓存数据的懒加载器。该函数实现了一种延迟加载机制,从而允许大体量数据仅在需要使用的时候才实际加载。

load_info

info: CachedFileInfo = cache.load_info(key: str)

透过某关键字,读取对应的元数据。

该方法的实现,基于获取load(key)[0]返回的值。

输入

参数类型必选
说明
keystr要查询数据的关键字。若该关键字key未找到,抛出FileNotFoundError

输出

参数类型
说明
infoCachedFileInfo从缓存中查询到的、轻量的元数据。

load_data

data: CachedData = cache.load_data(key: str)

透过某关键字,加载对应的缓存数据。

该方法的实现,基于获取load(key)[1]()调用的结果。

输入

参数类型必选
说明
keystr要查询数据的关键字。若该关键字key未找到,抛出FileNotFoundError

输出

参数类型
说明
dataCachedData从缓存中所查询到的数据。由于data可能体量较大,该值在大多数情况下,应当定义为一个类文件对象。

属性

chunk_size

chunk_size: int = cache.chunk_size

new_chunk_size: int
cache.chunk_size = new_chunk_size

保存大体量文件时,所用的文件块尺寸。数值单位为MB


dir

cache_dir: TempDir = cache.dir

获取该缓存的临时目录(参见TempDir)。将该值导出到其他CacheFile的实例,将会使得该目录被共享。

运算符

__contains__

flag: bool = key in cache

检查key是否注册在了缓存中。

输入

参数类型必选
说明
keystr要验证的关键字。

输出

参数类型
说明
flagbool若取值True,则表明key给定的值存在于缓存中。

范例

参见

各类缓存