Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

python 缓存

作者:刀剑傲天   发布日期:2026-02-02   浏览:80

# 使用 functools.lru_cache 实现缓存功能

from functools import lru_cache
import time

# 定义一个计算斐波那契数列的函数,并使用 lru_cache 装饰器来缓存结果
@lru_cache(maxsize=128)  # maxsize 表示最多缓存 128 个不同的输入结果
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

# 测试缓存效果
start_time = time.time()
print(f"Fibonacci(30) = {fibonacci(30)}")
end_time = time.time()
print(f"Time taken: {end_time - start_time:.6f} seconds")

# 再次调用,应该会更快,因为结果已经缓存了
start_time = time.time()
print(f"Fibonacci(30) = {fibonacci(30)}")
end_time = time.time()
print(f"Time taken: {end_time - start_time:.6f} seconds")

解释说明:

  1. functools.lru_cache:这是 Python 标准库中的一个装饰器,用于实现最常用的缓存机制(Least Recently Used Cache)。它会将函数的返回值缓存起来,当函数再次被调用时,如果参数相同,则直接返回缓存的结果,而不需要重新执行函数。

  2. maxsize 参数:指定了缓存的最大大小。在这个例子中,maxsize=128 表示最多缓存 128 个不同的输入结果。如果超过了这个限制,最早使用的缓存条目将会被移除。

  3. 斐波那契数列:这是一个经典的递归问题,通常情况下递归计算斐波那契数列的时间复杂度是指数级的。通过使用缓存,我们可以显著减少重复计算,从而提高性能。

  4. 测试缓存效果:第一次调用 fibonacci(30) 时,程序会进行实际的递归计算并缓存结果;第二次调用时,由于结果已经被缓存,因此可以直接从缓存中获取结果,速度会快得多。

上一篇:python ascii码转换

下一篇:python 列表求和

大家都在看

python时间格式

pythoneval函数用法

python读取文件路径

staticmethod在python中有

python 保存json文件

python开发windows应用程序

python中len是什么意思

python 私有函数

python ord和chr

python中的yield

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站