Python 内存缓存
python标准库中的functools模块,提供了functools.lru_cache,基于内存的缓存。
from functools import lru_cache
@lru_cache(maxsize=1)
def sum2(a,b):
print(f"计算{a}+{b} ... ")
return a+b
print(sum2(2,3))
print(sum2(2,3))
print(sum2(4,7))
print(sum2(4,7))
print(sum2(2,3))
print(sum2(4,7))
maxsize=1,表示可以缓存的元素的个数。
改变maxsize的值为2,再切换为1,运行程序观察输出结果,
sum2.cache_info() #查看缓存性能
sum2.cache_clear() #清除缓存
基于磁盘的缓存
"""
教程 https://joblib.readthedocs.io/en/latest/memory.html
安装 pip install joblib
"""
from joblib import Memory
memory = Memory(location="./cachedir")
@memory.cache
def sum2(a,b):
print(f"计算{a}+{b} ... ")
return a+b
print(sum2(2,3))
print(sum2(2,3))
print(sum2(4,7))
print(sum2(4,7))
print(sum2(2,3))
print(sum2(4,7))
————————————————
版权声明:本文为CSDN博主「_Tsun」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sunt2018/java/article/details/97235224
python之装饰器(类装饰器,函数装饰器)
@decorator这个语法相当于 执行 func = decorator(func),为func函数装饰并返回
<1> 类装饰器
## 装饰器 #类装饰器 class Decorator: def __init__(self,func): ## 赋值函数 self.func = func def __call__(self, *args, **kwargs): ## 一call顶万物 print('假设这里开始执行其他的代码') self.other_func() self.func(*args, **kwargs) self.other_func2() print('假设这里在执行完这个函数后,执行了其他的代码') return def other_func(self): print('这是一个打酱油的函数') @staticmethod def other_func2(): print('这是一个吃瓜的函数') ## 测试一下 @Decorator def test_a(a,b): print(f'print a :{a}') print(f'print b :{b}') c = a+b print(c) return c test_a(1,2)
执行结果:
<2>函数装饰器
函数装饰器还是比较多的,相对来说
def zsq_func(func): print('这是一个函数装饰器') def wrapper(*args,**kwargs): try: print('开始前,执行的代码') func(*args,**kwargs) print('结束了,执行的代码') return except: print('出错了的处理') print('执行装饰器函数前可以执行其他代码') return wrapper ## 测试一下 @zsq_func def func(a,b): print(f'print a :{a}') print(f'print b :{b}') c = a+b print(c) return c func(1,2)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类