python - joblib:加载所有缓存值(或搜索所有值)
问题描述
使用joblib.Memory
我可以缓存某些函数的结果,但我想知道是否有一种有效的方法来找出有缓存值的参数列表。
例如,假设函数slow_func
是针对 的某些值计算和缓存的x
,我可以找出我缓存了哪些值吗?
from joblib import Memory
mem = Memory(location='cache')
@mem.cache
def slow_func(x):
return x
解决方案
请谨慎使用以下答案:它使用joblib
.
from joblib import Memory
mem = Memory(location='cache')
...
def iterate_cache(mem):
"""Return the list of inputs and outputs from `mem` (joblib.Memory cache)."""
for item in mem.store_backend.get_items():
path_to_item = os.path.split(os.path.relpath(item.path, start=mem.store_backend.location))
result = mem.store_backend.load_item(path_to_item)
input_args = mem.store_backend.get_metadata(path_to_item).get("input_args")
yield input_args, result
print(list(iterate_cache(mem)))
StoreBackend封装了所有与缓存存储相关的方法。StoreBackend.load_item
加载缓存的结果,并StoreBackend.load_metadata
加载所有元数据,包括输入参数。
推荐阅读
- oauth-2.0 - 如何在 localhost 测试环境中测试 oAuth2?
- dymola - 如何在 Dymola 的文本编辑器中显示行号?
- algorithm - 序列化整数数组而不重复的算法(即一组)
- javascript - 将子集和算法从 JavaScript 转换为 Python
- wordpress - 带有标题滑块的 WordPress 插件
- elasticsearch - Logstash - HTTP 插件,证书颁发机构验证不起作用
- python - 根据项目中的编号对列表中的项目进行排序
- svg - 使用 svg 的饼图并做出反应
- python - 无法在 ubuntu 的 localhost 中打开 jupyter notebook
- c++ - 复合辛普森规则无穷大输出