首页 > 编程语言 >python 缓存函数结果,下次不会执行函数时直接获取结果[ lru_cache 、cache]

python 缓存函数结果,下次不会执行函数时直接获取结果[ lru_cache 、cache]

时间:2023-01-29 11:14:55浏览次数:65  
标签:__ development 函数 settings python cache environment lru

学习路径:https://www.aiuai.cn/aifarm1963.html


from functools import lru_cache

from pydantic import BaseSettings
n = 0

class Settings(BaseSettings):
    environment: str = "development"

@lru_cache(maxsize=128, typed=False)  # 被 lru_cache 修饰的函数在被相同参数调用的时候,后续的调用都是直接从缓存读结果,而不用真正执行函数。
def get_settings():  # 如果调用两次传的参数不一样,无法缓存
    global n
    settings = Settings()
    print(f"Loaded settings for environment: {settings.environment}")
    n += 1
    return settings

def action_a():
    print(get_settings().environment)

def action_b():
    print(get_settings().environment)



if __name__ == "__main__":
    action_a()
    action_b()
    print(n)

输出:


Loaded settings for environment: development
development
development
1

可以看出函数调用了两次,但是n只增加了一次。去掉lru_cache装饰器,n就是2了

标签:__,development,函数,settings,python,cache,environment,lru
From: https://www.cnblogs.com/tarzen213/p/17072049.html

相关文章

  • python入门之str通用操作/索引/切片
    """通用操作str"""str01="二狗"str02="三叔"#字符串拼接str03=str01+str02#字符串累加str01+=str02print(str01)#重复生成元素print(str01*......
  • Python中的深拷贝与浅拷贝
    Python进阶篇-系列文章全篇......
  • 函数式编程和Data Parallel:MapReduce的前前前世
    由于一时心血来潮、想针对谷歌三驾马车(MapReduce,GFS,BigTable)分别写点啥,故我上个月在GoogleFileSystem及其继任者Colossus中针对以GFS为代表的谷歌存储系统写了一篇......
  • js函数参数默认值
    以前的写法,利用短路原则来写:functionhaosy(name,age){name=name||'小郝';age=age||21;alert('读者你好,我是作者'+name+',芳龄'+age+'岁。');}调用:情......
  • python 运算符
    除法运算(/),整除运算(//),计算求余(%),(**)乘方运算,变量赋值(=),字符串有多种表现形式,用单引号('……')或双引号("……")标注的结果相同,反斜杠\用于转义   >>>17/3 #clas......
  • 读Java8函数式编程笔记04_类库
    1. 默认方法1.1. 接口中定义的包含方法体的方法,方法名有default关键字做前缀1.1.1. 在任何接口中,无论函数接口还是非函数接口,都可以使用该方法1.2. Collection接口......
  • Python 内置界面开发框架 Tkinter入门篇 乙
    *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/2GFLTstDC7w6u3fTJxflNA本文大概 1685 个字,阅读需花 6 分钟......
  • Python之装饰器
    #装饰器功能说明"""python中的装饰器(decorator)一般采用语法糖的形式,是一种语法格式。比如:@classmethod,@staticmethod,@property,@xxx.setter,@wraps(),@fun......
  • Python之生成器
    """生成器说明:1、生成器一次只返回一个数据;2、yield把函数变成了一个生成器;3、生成器函数的执行过程看起来就是不断地执行->中断->执行->中断的过程;4、一开始,调用......
  • Python之高阶函数
    #高阶函数functoolsimportfunctools#遍历序列元素为参数依次应用到函数中,最终返回累计的结果n=functools.reduce(lambdax,y:x+y,[1,2,3,4,5])print(......