首页 > 编程语言 >python的lru_cache

python的lru_cache

时间:2023-07-24 11:24:18浏览次数:36  
标签:缓存 python functools cache maxsize lru 128

functools模块中的lru_cache是一个装饰器,用于缓存函数的结果,以避免重复计算。LRU(Least Recently Used)表示最近最少使用,这意味着当缓存空间满时,会优先删除最久未被使用的缓存项。

要使用lru_cache装饰器,需要将其应用于你想要缓存的函数。以下是一个简单的例子:

import functools

@functools.lru_cache(maxsize=128)
def fibonacci(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)

# 第一次调用将会计算并缓存结果
print(fibonacci(10))

# 第二次调用时,将直接从缓存中获取结果,而不进行重复计算
print(fibonacci(10))

在上面的例子中,我们定义了一个fibonacci函数来计算斐波那契数列的第n项。使用@functools.lru_cache(maxsize=128)装饰器,我们启用了缓存功能,并设置了缓存的最大大小为128个缓存项。

lru_cache装饰器还支持其他可选参数:

  • maxsize: 设置缓存的最大大小,表示最多缓存多少个不同的参数。默认值为128。
  • typed: 若为True,则不同类型的函数参数将分别缓存。例如,对于参数1和1.0,当typed为True时,它们会被认为是不同的参数,而当typed为False时,它们会被认为是相同的参数。默认为False。

请注意,lru_cache适用于纯函数,即给定相同的输入,始终返回相同的结果。对于有副作用的函数,如修改全局变量、读写文件等,不应该使用lru_cache,因为缓存可能导致不可预测的行为。

标签:缓存,python,functools,cache,maxsize,lru,128
From: https://www.cnblogs.com/tangjicheng/p/17576760.html

相关文章

  • python打包方法
    在Python中,要编写setup.py文件,用于构建和打包你的Python项目,你可以遵循以下步骤:创建项目目录结构:首先,你需要创建项目的目录结构,包括源代码文件、资源文件等。一个常见的项目结构如下:project_name/|-project_name/|-__init__.py|-module1.py......
  • brew 安装的python
    brew安装的Python简介Python是一种面向对象、解释型的高级编程语言。它非常流行,广泛应用于Web开发、数据分析、人工智能等领域。在macOS系统上,我们可以使用Homebrew(简称brew)来安装Python。Homebrew是macOS上的一个包管理器,可以方便地安装、升级和管理软件包。它会自动解决依赖......
  • Python爬虫实战之提高CSDN访问量
    python爬虫之建立代理池(一)_CodingInCV的博客-CSDN博客python爬虫之建立代理池(二)_CodingInCV的博客-CSDN博客前面2篇分别介绍了从2个免费代理网站爬取免费代理来构建我们自己的代理池。这一篇我们从实战的角度来将我们的代理池用起来,通过代理的方式访问我们的CSDN博客(CSDN会认为......
  • Python入门 - 路径,文件夹
    路径#分隔符print(os.pathsep)#;print(os.altsep)#/print(os.extsep)#.#拼接print(os.path.join("a","b","c"))#a\b\c#绝对路径print(os.path.abspath("a/b/c"))#C:\Users\win\PycharmProjects\myTest\a\b\c......
  • Python入门 - 位运算
     a=0b1101b=0b1010print(a,b)#1310#与print(bin(a&b))#0b1000#或print(bin(a|b))#0b1111#异或print(bin(a^b))#0b0111,位不同的为1,相同的为0#非print(bin(~a))#-0b1110,-(a+1)#左移print(bin(a<<1))#0b11010#右移prin......
  • Python【12】 字典的get()方法
    返回指定键的值。参考:https://www.runoob.com/python/att-dictionary-get.html......
  • 解决python解析Excel文件报错xlrd.biffh.XLRDError: Excel xlsx file; not supported
    报错如下:解决方案:1、安装低版本xlrdpipinstallxlrd==1.2.02、Excel另存为的时候将后缀改为.xls文件再修改代码的文件后缀即可,高版本的xlrd模块依旧支持读取.xls文件参考文章:https://blog.csdn.net/yuan2019035055/article/details/128408178......
  • Python【13】 字典的 items( ) 方法
    类似于字典转元组的效果,但又不完全是参考:https://www.runoob.com/python3/python3-att-dictionary-items.html......
  • 相关系数 python 分类
    相关系数的Python分类引言本文将向刚入行的小白开发者介绍如何使用Python计算相关系数。相关系数是用于衡量两个变量之间关联程度的统计量。在数据分析和机器学习中,相关系数经常被用于探索和理解变量之间的关系。在本文中,我将向你介绍整个计算相关系数的流程,并提供每个步骤所需......
  • 显示前100个回文素数python
    回文素数的科普1.什么是回文数?回文数是指从左到右和从右到左读起来都一样的数。比如,121、12321等都是回文数。2.什么是素数?素数是指大于1且只能被1和自身整除的数。比如,2、3、5、7等都是素数。3.什么是回文素数?回文素数是同时满足回文数和素数的数。比如,131、373等都是回......