从函数内部禁用 `functools.lru_cache`

2024-01-06

我想要一个可以使用的功能functools.lru_cache,但不是默认情况下。我正在寻找一种使用函数参数的方法,该函数参数可用于禁用lru_cache。目前,我有该函数的两个版本,其中一个版本带有lru_cache和一个没有。然后我有另一个函数,它用一个参数包装它们,该参数可用于控制使用哪个函数

def _no_cache(foo):
    print('_no_cache')
    return 1


@lru_cache()
def _with_cache(foo):
    print('_with_cache')
    return 0


def cache(foo, use_cache=False):
    if use_cache:
        return _with_cache(foo)
    return _no_cache(foo)

有没有更简单的方法来做到这一点?


您无法从装饰函数内部禁用缓存。但是,您可以通过直接访问该函数来稍微简化代码__wrapped__属性。

来自文档 https://docs.python.org/3/library/functools.html#functools.lru_cache:

原始的底层函数可以通过__wrapped__属性。这对于内省、绕过缓存很有用, 或者用不同的缓存重新包装函数。

Demo:

from functools import lru_cache

@lru_cache()
def f(arg):
    print(f"called with {arg}")
    return arg    

def call(arg, use_cache=False):
    if use_cache:
        return f(arg)
    return f.__wrapped__(arg)

call(1)
call(1, True)
call(2, True)
call(1, True)

Output:

called with 1
called with 1
called with 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从函数内部禁用 `functools.lru_cache` 的相关文章

  • 如何替换 Pandas Dataframe 中不在列表中的所有值? [复制]

    这个问题在这里已经有答案了 我有一个值列表 如何替换 Dataframe 列中不在给定值列表中的所有值 例如 gt gt gt df pd DataFrame D ND D garbage columns S gt gt gt df S 0
  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • 在 Python 中将列表元素作为单独的项目返回

    Stackoverflow 的朋友们大家好 我有一个计算列表的函数 我想单独返回列表的每个元素 如下所示 接收此返回的函数旨在处理未定义数量的参数 def foo my list 1 2 3 4 return 1 2 3 4 列表中的元素数
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 更好地相当于这个疯狂的嵌套 python for 循环

    for a in map for b in map a for c in map b for d in map c for e in map d print a b c d e 上面的代码用于创建图中一定长度的所有路径 map a 表示从
  • Tensorboard SyntaxError:语法无效

    当我尝试制作张量板时 出现语法错误 尽管开源代码我还是无法理解 我尝试搜索张量板的代码 但不清楚 即使我不擅长Python 我这样写路径C Users jh902 Documents logs因为我正在使用 Windows 10 但我不确定
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • 使用 Python Oauthlib 通过服务帐户验证 Google API

    我不想使用适用于 Python 的 Google API 客户端库 但仍想使用 Python 访问 Google APIOauthlib https github com idan oauthlib 创建服务帐户后谷歌开发者控制台 http
  • 当字段是数字时怎么说...在 mongodb 中匹配?

    所以我的结果中有一个名为 城市 的字段 结果已损坏 有时它是一个实际名称 有时它是一个数字 以下代码显示所有记录 db zips aggregate project city substr city 0 1 sort city 1 我需要修
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • Spider 必须返回 Request、BaseItem、dict 或 None,已“设置”

    我正在尝试从以下位置下载所有产品的图像 我的蜘蛛看起来像 from shopclues items import ImgData import scrapy class multipleImages scrapy Spider name m
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • 制作一份 Python 文档的 PDF 文件

    Python 官方网站提供 PDF 文档下载 但它们是按章节分隔的 我下载了源代码并构建了 PDF 文档 这些文档也是单独的 PDF 我怎么能够从源代码中的 Makefile 构建一个 PDF 文件 我认为这样阅读起来会更方便 如果连接单独
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • 将索引与值交换的最快方法

    考虑pd Series s s pd Series list abcdefghij list ABCDEFGHIJ s A a B b C c D d E e F f G g H h I i J j dtype object 交换索引和值并
  • python 对浮点数进行不正确的舍入

    gt gt gt a 0 3135 gt gt gt print 3f a 0 314 gt gt gt a 0 3125 gt gt gt print 3f a 0 312 gt gt gt 我期待 0 313 而不是 0 312 有没有
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐

  • 如何在 Visual Studio Code 中手动终止任务?

    Visual Studio Code 使我们能够在tasks json 中设置任务 我见过人们使用 监视 任务 但不知道如何手动终止它们 我这样做的唯一方法是尝试再次启动同一任务 这会提示我终止正在运行的任务 有键盘快捷键可以做到这一点吗
  • 为什么 $nin 比 $in 慢,Mon​​godb

    我有 5M 文档的集合 索引正确 in 工作完美 但相同的查询 nin 超级慢 这是什么原因 超级快 tech in Wordpress wordpress WORDPRESS 超级慢 tech nin Wordpress wordpres
  • 为什么 useEffect 不会在 window.location.pathname 更改时运行?

    Why 使用效果不运行window location pathname变化 我明白了loc仅记录一次 我怎样才能运行使用效果当路径名更改而没有任何附加库时 useEffect gt const loc window location pat
  • ASP.NET - 向用户发送 PDF

    我有一个创建 PDF 的过程 我希望这些 PDF 是临时的 短暂的 我希望能够在用户单击按钮时执行以下操作 string CreatePDF returns fileName pdf PromptUserToDownloadPDF Dele
  • Subversion 的奇怪问题 - 尝试重新创建曾经在我的存储库中的目录时“文件已存在”

    所以 我曾经有一个名为 mysql 的目录 几次修订前 我删除了它 并决定重新开始 但是当我尝试创建新的 mysql 目录时 我不断遇到 文件已存在 错误 support etc puppet modules mkdir mysql sup
  • 在 T4 中引用程序集时出现“找不到元数据文件”错误

    我有班级图书馆A和图书馆B与T4模板 B 引用 A 并且汇编指令存在于模板内 lt assembly name ProjectDir OutDir A dll gt 当我运行模板转换错误时显示 编译转换 元数据文件 path A dll 无
  • 函数使用 print 进行迭代,但不使用 return 进行迭代

    Python 新手 运行 2 7 我正在尝试创建一个程序 该程序使用函数生成文本 然后将函数生成的文本输出到文件 当只是在 powershell 中打印函数时 如下所示 http codepad org KftHaO6x http code
  • 如何始终显示两个日期选择器并在输入中设置默认日期

    我有两个输入 startdate and enddate 我正在使用 jQuery UI 的日期选择器 我有两个问题 1 如何使日期选择器始终显示 而不是单击输入时显示 当前代码仅显示enddate的日期选择器 当我单击其他输入时它将隐藏
  • 使用 Phonegap 离线浏览已知地图

    您好 提前谢谢您 我想问是否有一种方法可以编译已知的谷歌地图图块并将其加载到 Phonegap 应用程序中 更具体地说 我正在开发一个应用程序 涉及特定区域内的地理位置 路径导航等 由于应用程序的使用性质 例如 它可能用于野生动物 用户的手
  • 将返回的 JSON 对象属性转换为(低位在前)camelCase

    我从 API 返回了 JSON 如下所示 Contacts GivenName Matt FamilyName Berry 为了保持与我的代码风格一致 camelCase 小写首字母 我想转换数组以生成以下内容 contacts given
  • 我可以将 jQuery UI 1.12.1 与 jQuery 3.x 一起使用吗?

    我改变了我的 jQuery1 7 2 to 3 1 1并更改了我的 jQuery UI 版本1 8 16到版本1 12 1 我现有的很多 JS 东西都坏了 比如按钮的样式 以及dialog行为方式出乎意料 即一半的模式对话框被神秘的东西掩盖
  • 具有事件处理程序的 asp.net 动态按钮

    我在 ASP NET 中动态生成的按钮及其事件处理程序遇到了一个小问题 我为特殊用户生成了一个带有附加按钮的灵活表格 这些按钮将动态生成 效果很好 但我无法让事件处理程序工作 以下是我的代码中的一些片段 构建按钮 在自己的函数中 Butto
  • 使用 JavaScript 从 C# 执行 doPostBack

    您好 我有一个父页面 它打开一个弹出窗口 用户在子弹出页面上进行一些更改 然后单击保存按钮 当用户单击保存按钮时 我想PostBack到父页面 以便在弹出窗口中所做的更改可以在父窗口中看到 Question 如何实现上述场景 我想在aspx
  • 将单个 doc 文件转换为 pdf

    我正在使用以下代码如何以编程方式将 Word 文件转换为 PDF https stackoverflow com questions 607669 how do i convert word files to pdf programmati
  • 在 virtualenv 中创建项目时没有名为 django.core 的模块

    所以我环顾了很多与我类似的问题 但我找不到具体的答案 我的电脑规格是 Windows 7 64 位 我的问题是这样的 1 我使用 pip 安装了 virtualenv pip install virtualenv 2 之后我创建并激活了一个
  • JUnit 5 有类似 Cucumber 的标记钩子的东西吗?

    有没有办法像 Cucumber 一样在 JUnit5 中用钩子注释单个测试 例如 在黄瓜中 可以编写像这样的钩子 Before SomeTest public void beforeSomeTest 然后 如果我们使用 SomeTest 注
  • 如何从 calibrateCamera 结果获取相机世界位置?

    我正在使用 calibrateCamera 执行相机校准 输出的一部分是一组 Rodrigues 旋转向量和 3 D 平移向量 我对摄像机的世界位置感兴趣 如果我直接绘制平移点 结果看起来不正确 我觉得我的坐标空间很混乱 但我在解析 ope
  • nginx try_files 和 add_header

    有人可以解释一下吗 我有一个 nginx 服务器块 其中包含以下代码片段 location try files uri uri index html 基本上 我用它来提供 Angular SPA 它运作良好且很棒 现在我想追加Access
  • 显示韩语字符 - iOS 应用程序

    我正在尝试在我的 iPhone 应用程序中显示韩文文本 该应用程序将字母的 Unicode 逐一附加到 NSMutableString 中 并在附加每个字母后在屏幕上显示该字符串 我了解连接字母 Jamo 有一些规则 是否有一个函数可以自动
  • 从函数内部禁用 `functools.lru_cache`

    我想要一个可以使用的功能functools lru cache 但不是默认情况下 我正在寻找一种使用函数参数的方法 该函数参数可用于禁用lru cache 目前 我有该函数的两个版本 其中一个版本带有lru cache和一个没有 然后我有另