- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 Python3
的 functools
包中,有一个 lru_cache()
装饰器可以内存您的函数调用。
有没有办法让我将这个缓存转储到一个文件中,然后再将文件加载回内存中?
我在 functools 文档中找不到此功能。实现上述要求的推荐方法是什么,最好是只涉及 Python 的解决方案?
最佳答案
我不知道解决这个问题的标准方法。但是你可以这样写你的注释:
def diskcached(cachefile, saveafter=1):
def cacheondisk(fn):
try:
with open(cachefile, 'rb') as f:
cache = pickle.load(f)
except:
cache = {}
unsaved = [0]
@wraps(fn)
def usingcache(*args, **kwargs):
try:
key = hash((args, kwargs))
except TypeError:
key = repr((args, kwargs))
try:
ret = cache[key]
except KeyError:
ret = cache[key] = fn(*args, **kwargs)
unsaved[0] += 1
if unsaved[0] >= saveafter:
with open(cachefile, 'wb') as f:
pickle.dump(cache, f)
unsaved[0] = 0
return ret
return usingcache
return cacheondisk
和一起使用
@diskcached("filename_to_save")
def your_function():
...
关于python - lru_cache 转储到文件中并再次加载回内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35742636/
如何配置lru_cache根据接收到的实际值而不是如何调用函数来键入其缓存? >>> from functools import lru_cache >>> @lru_cache ... def f(
在运行下面的代码时,我收到 Python 无法导入 lru_cache 的错误。但是,每次导入(数学等)都会发生这种情况。我已经尝试了我可以在互联网上找到的每一个教程来尝试让这个东西工作。我已经重新安
我知道 cache_clear。但是我想知道如何清除单个调用的缓存。看到 cache_clear 不接受参数,我认为唯一的方法是直接弄乱底层字典。会有什么副作用(如果有的话)? 我们的目标是实现以下目
在 Python3 的 functools 包中,有一个 lru_cache() 装饰器可以内存您的函数调用。 有没有办法让我将这个缓存转储到一个文件中,然后再将文件加载回内存中? 我在 functo
我有一个带有方法/属性 multiplier 的对象。这个方法在我的程序中被多次调用,所以我决定在它上面使用lru_cache()来提高执行速度。正如预期的那样,它要快得多: 下面的代码显示了问题:
我试图了解 python (3) 中 lru_cache decorator 的实现,特别是它如何从函数 创建 key args 为其内部 dict。 我一直在读这篇文章https://github.
我正在尝试为一些计算科学代码组合数据类、属性和 lru_caches: from dataclasses import dataclass from typing import Any from fu
我在使用 django 应用程序的日志中收到此错误。我认为使用 Python 2.x 时会发生此类错误,但在我的虚拟环境中会发生 Python - 3.6.5 . Django - 2.0.7 .带有
根据documentation lru_cache 的默认值来自 functools是 128。但是没有定义单位。 Decorator to wrap a function with a memoiz
我在 Windows 上使用 Python 3.7 运行每个代码时都会发生此错误: Traceback (most recent call last): File "test.py", line
我有一个像这样的 Python 单调度通用函数: @singledispatch def cluster(documents, n_clusters=8, min_docs=None, depth=2
是否可以在项目被逐出时为 functools.lru_cache 定义回调?在回调中,缓存的值也应该存在。 如果没有,也许有人知道支持逐出和回调的轻量级类字典缓存? 最佳答案 我将发布我使用的解决方案
我想要一个可以使用 functools.lru_cache 的函数,但默认情况下不能。我正在寻找一种方法来使用可用于禁用 lru_cache 的函数参数。目前,我有两个版本的函数,一个有 lru_ca
这个问题在这里已经有了答案: How do I use cache_clear() on python @functools.lru_cache (3 个答案) 关闭 6 年前。 有什么方法可以覆盖
在评论中:Is there a decorator to simply cache function return values? @gerrit 指出了将可变但可散列的对象用于带有 functool
是否可以使用 functools.lru_cache 来缓存由 functools.partial 创建的部分函数? 我的问题是一个函数,该函数采用可散列参数和常量、不可散列对象(例如 NumPy 数
我有一个将(以及其他)字典作为参数的方法。该方法是解析字符串,字典提供了一些子字符串的替换,所以它不必是可变的。 这个函数经常被调用,而且在冗余元素上,所以我认为缓存它会提高它的效率。 但是,正如您可
这是我要通过缓存增强的功能的框架,因为执行RPC(远程过程调用)涉及到其他主机的TCP连接。 def rpc(rpc_server, rpc_func, arg): return rpc_se
这是我的情况,is_exist功能有性能问题。 def is_exist(link :str) -> bool: if query_db(link) is True: ret
作为并行化一些现有代码(使用多处理)的一部分,我遇到了类似于下面类的东西需要被 pickle 的情况。 从...开始: import pickle from functools import lru_
我是一名优秀的程序员,十分优秀!