当前位置: 首页 > 面试题库 >

如何在python @ functools.lru_cache上使用cache_clear()

董子平
2023-03-14
问题内容

该文档指出:

装饰器还提供cache_clear()用于清除或使高速缓存无效的功能。

它没有提供任何示例或使用指导 cache_clear()

我有两个问题:

  • 如何cache_clear()从其他功能运行?
  • 如果我cache_clear()有条件地在正在缓存的函数中进行调用,它将永远执行吗?

问题答案:

除了缓存之外,lru_cachedecorator还向修饰后的函数-cache_info和中添加了新功能cache_clear。下面是一个简单的示例,应解释它们如何工作:

>>> @lru_cache(5)
... def foo():
...     print('Executing foo...')
... 
>>> foo()
Executing foo...
>>> foo()
>>> foo.cache_info()
CacheInfo(hits=1, misses=1, maxsize=5, currsize=1)
>>> foo.cache_clear()
>>> foo()
Executing foo...

回答您的问题:

如果我有条件地将cache_clear()调用放在正在缓存的函数中,它将执行吗?

如果结果尚未缓存,则该函数将执行,并且应根据您的条件执行该函数cache_clear。不过,我不会使用这种解决方案-
一种好的做法是在缓存的对象外部进行无效化,否则在最坏的情况下根本没有失效的风险,在最佳情况下则看不到代码

如何从其他函数运行cache_clear()?

只需导入缓存的函数并调用cache_clear它:

from x import foo

def bar():
    foo.cache_clear()


 类似资料:
  • 问题内容: 我安装了Python 3.x(除了Ubuntu上的Python 2.x),然后慢慢开始配对在Python 2.x中使用的模块。 因此,我想知道,应该为Python 2.x和Python 3.x使用pip来简化生活吗? 问题答案: 您应该采取的方法是为Python 3.2安装。 您可以通过以下方式执行此操作: 然后,您可以使用来安装适用于Python 3.2的内容,并使用来安装适用于Py

  • 问题内容: 我需要在Python中进行这样的导出: 我试着做: 但是当我列出导出时,“ MY_DATA”没有出现: 如何使用Python进行导出而不将“ my_export”保存到文件中? 问题答案: 你真的想做

  • 问题内容: 我想搭配使用。我尝试了各种解决方案,但到目前为止没有任何效果。有人可以指导我怎么做吗? 问题答案: 将管道与模块一起使用,必须通过。 但是,出于种种原因,这并不是真正可取的选择,其中不仅包括安全性。相反,请分别创建和流程,并将输出从一个管道传递到另一个管道,如下所示: 但是,在你的特定情况下,简单的解决方案是先调用然后在输出上。

  • 本文向大家介绍如何在BigDecimal上使用>,=,相关面试题,主要包含被问及如何在BigDecimal上使用>,=,时的应答技巧和注意事项,需要的朋友参考一下 Class的每个对象都有一个可用来将其与另一个BigDecimal进行比较的方法。然后比较的结果,或者根据需要进行比较。阅读文档,您将找到答案。 运营商,,等只能在基本数据类型等中使用,,或它们的包装类等和。 从以下文档中: 将其与指定

  • 问题内容: 我试图了解Python中的线程。我看过文档和示例,但坦率地说,许多示例过于复杂,我难以理解它们。 你如何清楚地显示为多线程而划分的任务? 问题答案: 我将在下面进行总结-最终仅是几行代码: 这是以下内容的多线程版本: 描述 Map是一个很棒的小功能,是轻松将并行性注入Python代码的关键。对于那些不熟悉的人来说,地图是从Lisp等功能语言中提炼出来的。它是将另一个功能映射到序列上的功

  • 问题内容: 如何设置Selenium与Python一起使用?我只想用Python编写/导出脚本,然后运行它们。是否有任何资源?我尝试使用谷歌搜索,但是发现的东西要么是指Selenium(RC)的过时版本,要么是Python的过时版本。 问题答案: 您是说Selenium WebDriver吗?… 先决条件 :根据您的操作系统安装Python 使用以下命令安装 并在您的代码中使用此模块 您还可以根据