Python functools.lru_cache 驱逐回调或等效函数

2024-04-07

是否可以定义回调functools.lru_cache当一个项目被驱逐时?在回调中还应该存在缓存的值。

如果没有,也许有人知道一个支持驱逐和回调的轻量级类似字典的缓存?


我将我使用的解决方案发布出来以供将来参考。我使用了一个名为cachetools的包(https://github.com/tkem/cachetools https://github.com/tkem/cachetools)。您可以简单地安装$ pip install cachetools.

它也有类似于 Python 3 的装饰器functools.lru_cache (https://docs.python.org/3/library/functools.html https://docs.python.org/3/library/functools.html).

不同的缓存都源自cachetools.cache.Cache这称为popitem()函数来自MutableMapping驱逐物品时。该函数返回“弹出”项的键和值。

要注入逐出回调,只需从所需的缓存中派生并覆盖popitem()功能。例如:

class LRUCache2(LRUCache):
    def __init__(self, maxsize, missing=None, getsizeof=None, evict=None):
        LRUCache.__init__(self, maxsize, missing, getsizeof)
        self.__evict = evict

    def popitem(self):
        key, val = LRUCache.popitem(self)
        evict = self.__evict
        if evict:
            evict(key, val)
        return key, val
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python functools.lru_cache 驱逐回调或等效函数 的相关文章

随机推荐

  • 从不规则时间序列创建规则 15 分钟时间序列

    我的 csv 文件中有一个不规则的时间序列 包含 DateTime 和 RainfallValue C SampleData csv DateTime RainInches 1 6 2000 11 59 0 1 6 2000 23 59 0
  • 树 /f cmd 修改日期。 Windows Powershell

    我需要创建一个 tree驱动器的文件夹 子文件夹和修改日期的列表 tree f命令效果很好 但我需要添加修改日期 我怎样才能做到这一点 它不会那么漂亮 但你可以使用 Recurse使用 Get ChildItem 选项来查找所有这些 此外
  • 是否可以使用 python-shell 包在 Node JS 中安装 python 包?

    我刚刚知道我们可以使用下面的 npm 包在 Node JS 中运行 Python 脚本 蟒蛇外壳 https www npmjs com package python shell 是否可以使用相同的库安装 python 包 就像是pip i
  • 自定义组件上的 OverlayTrigger 不起作用

    我试图在自定义组件 按钮 悬停时显示弹出窗口 class MyComponent extends React PureComponent
  • 如何避免页脚上的手风琴重叠

    我是 jQuery 新手 我正在使用手风琴 当我单击手风琴时 它会重叠在页脚上 我怎样才能避免它 下面是页脚的代码
  • 使用 mmap 访问 PCI-e 内存空间

    我在 Freescale MPC8308 处理器 基于 PowerPC 架构 上使用 PCI e 端口 在尝试使用它时遇到一些问题 端点 PCI e 设备的内存空间等于 256 MB 我可以使用 pciutils 包轻松读取和写入端点设备的
  • wxhaskell异步更新

    我正在使用 WxHaskell 以图形方式显示使用 TCP 通告状态更新的程序的状态 我使用 Data Binary 对其进行解码 当收到更新时 我想更新显示 所以我希望 GUI 能够异步更新其显示 我知道processExecAsync异
  • 如何强制在 DateTimeAxis 上显示特定日期

    是否可以强制在图表上显示网格线以及极端数据点的日期 我已经尝试了以下 Chart DateTimeAxis 属性的几乎所有配置 IntervalType Interval Minimum and Maximum但我对结果并不满意 设置属性M
  • B 树、数据库、顺序插入与随机插入以及速度。随机就是胜利

    EDIT Remus 纠正了我的测试模式 您可以在下面看到他的答案的更正版本 我采纳了用 DECIMAL 29 0 替换 INT 的建议 结果是 十进制 2133GUID 1836 即使行稍大一些 随机插入仍然获胜 尽管有解释表明随机插入比
  • 使用 SFINAE 检测成员函数 [重复]

    这个问题在这里已经有答案了 C 11中 判断一个类是否有成员函数size 您可以定义以下测试助手 template
  • 如何包含 Linux 头文件(如 linux/getcpu.h)?

    我在用着Linux 3 5 0 17 generic 28 Ubuntu SMP Tue Oct 9 19 31 23 UTC 2012 x86 64 GNU Linux 我需要 include
  • 如何在每个“exec”命令处执行 Docker 映像的入口点?

    在尝试使用 Dockerspec 测试 Dockerfiles 后 我终于得到了an issue https github com zuazo dockerspec issues 12我无法正确解决 我认为问题出在 Docker 本身 如果
  • 跨平台 Windows / OS X 开发,具有大量现有代码库

    对于使用 MFC 和 WinAPI 用 C 编写的复杂应用程序 有大量现有代码库 需要将其移植到 Mac OS X 理想的解决方案是在不同平台之间拥有尽可能多的通用代码 尤其是诸如业务之类的代码逻辑 GUI 可能会有所不同 具体取决于跨平台
  • 在 64 位 C++ 程序中使用 32 位库

    有什么方法可以在 64 位系统中使用旧的 32 位静态库 a 吗 没有机会获得这个旧库的源代码来再次编译它 我也不想在 gcc 中使用 m32 因为该程序使用许多 64 位库 谢谢 这完全取决于您运行的平台 例如 PowerPC 上的 OS
  • 调试 CoreGraphics/MapKit 中的崩溃

    当我的应用程序在 iPhone 上运行时 我遇到间歇性崩溃 所有崩溃都是相同的 并且以某种方式涉及 MKMapView Overlays MKCircleViews 来自典型的 iPhone 4s 崩溃报告 报告标题 Hardware Mo
  • 如何在 SMPP 中正确表示消息类别

    我目前正在尝试弄清楚 sms 类如何在 SMPP 中正确表示 然而 我现在对标准及其文档完全感到困惑 在普通短信中我们有 Class0 Flash短信 显示在显示屏上 Class1 普通短信存储在 SIM 卡上或设备内部 查看SMPP规范
  • 如何忽略 CMakeLists.txt 中单个 CMake 命令的错误?

    我有一个项目CMakeLists txt尝试读取可能存在或不存在的文件 文件丢失不是问题 脚本可以处理这两种情况 如果我们可以检测到已知的 Linux 发行版 这将用于稍微调整编译环境 file READ etc redhat releas
  • FragmentTransaction.remove 没有效果

    我的要求非常简单 我有一个按钮可以逐个片段地替换片段 这听起来很容易并且几乎可行 最大的问题是旧片段没有被删除 新片段被放置在旧片段的前面 并且它们在我的布局中 生活 在一起 代码 FragmentManager fragMgr a get
  • Xamarin Forms 4.1.0:找不到方法:void .ResourceLoadingQuery.set_Instance(object)

    SOLUTION 解决方案在这里 https github com xamarin Xamarin Forms issues 6787 或者只需确保解决方案中使用 Xamarin Forms 的所有项目均已更新 原始问题 从 4 0 0 4
  • Python functools.lru_cache 驱逐回调或等效函数

    是否可以定义回调functools lru cache当一个项目被驱逐时 在回调中还应该存在缓存的值 如果没有 也许有人知道一个支持驱逐和回调的轻量级类似字典的缓存 我将我使用的解决方案发布出来以供将来参考 我使用了一个名为cachetoo