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

使@lru_cache忽略某些函数参数

子车轶
2023-03-14
问题内容

如何使@functools.lru_cache装饰器忽略有关缓存键的某些函数参数?

例如,我有一个看起来像这样的函数:

def find_object(db_handle, query):
    # (omitted code)
    return result

如果我lru_cache像这样应用装饰器,db_handle它将包含在缓存键中。结果,如果我尝试使用相同query但不同的函数调用该函数db_handle,它将再次执行,这是我想避免的。我只想lru_cache考虑query论点。


问题答案:

使用cachetools可以编写:

from cachetools import cached
from cachetools.keys import hashkey

from random import randint

@cached(cache={}, key=lambda db_handle, query: hashkey(query))
def find_object(db_handle, query):
    print("processing {0}".format(query))
    return query

queries = list(range(5))
queries.extend(range(5))
for q in queries:
    print("result: {0}".format(find_object(randint(0, 1000), q)))


 类似资料:
  • 项目中经常会生成一些Git系统不需要追踪(track)的文件。典型的是在编译生成过程中 产生的文件或是编程器生成的临时备份文件。当然,你不追踪(track)这些文件,可以 平时不用"git add"去把它们加到索引中。 但是这样会很快变成一件烦人的事,你发现 项目中到处有未追踪(untracked)的文件; 这样也使"git add ." 和"git commit -a" 变得实际上没有用处,同时

  • 问题内容: 我使用matplotib的Axes API绘制了一些数字。我画的线之一代表理论上的预期线。它没有原始y和x限制的含义。我想要的是让matlplotlib在自动缩放限制时忽略它。我以前要做的是检查当前极限,然后绘制并重置极限。问题在于,当我绘制第三张图时,将与理论线一起重新计算极限值,这实际上扩展了图。 问题答案: 显而易见的方法是手动将限制设置为所需的值。(例如) 如果您不想手动查找限

  • 我想知道是否可以使用此方法忽略字段,因为我有一个要忽略的字段列表,在同一个类中,那么我该如何做呢? 我正在使用 谢谢

  • 我正在制作一个不和谐机器人来跟踪在语音频道上花费的时间,但我想知道我是如何做到的,它不计算在某个频道上的成员的时间,比如afk频道。 这是我现在正在使用的事件

  • 我在服务中使用MongoRepository。在我的例子中,我有三个字段,它们的名字是“姓名”、“年龄”和“性别”。我可以在我的界面中使用以下方法来查询数据: 现在我想用这3个字段的每一个组合来查询数据,所以我需要在这里写7 (3 3 1)方法,它真的很难看。 我试着写些 如果输入只有两个字段:name=Chris,age=18,那么我可以调用 来获取Chris和18岁的人的名单。我怎样才能实现这

  • 问题内容: 我收到此错误,因为其中一位用户在他的帖子中添加了 错误:[$ sanitize:badparse]清理程序无法解析以下html块:<3 我写的代码 我想他要采取仅标签和标签 那可能吗? 谢谢! 问题答案: 您可以创建过滤器,以清理HTML。 我在其中使用了strip_tags函数 http://phpjs.org/functions/strip_tags/ 控制器: 视图: http: