MST

星途 面试题库

面试题:Python中常用的缓存模块有哪些及如何简单使用

请列举Python中至少两个常用的缓存模块,并简述如何使用其中一个模块对一个函数进行缓存,以提升其性能。
17.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  • 常用缓存模块

    • functools.lru_cache:这是Python标准库functools中的一个函数装饰器,用于实现LRU(Least Recently Used)缓存,它会自动缓存函数的返回值,当相同参数再次调用时,直接返回缓存中的值,提高函数执行效率。适用于纯函数(相同输入始终返回相同输出)场景。
    • cachetools:是一个功能丰富的第三方缓存库,提供多种缓存类型,如TTLCache(带过期时间的缓存)、LRUCache等。
  • 使用functools.lru_cache对函数进行缓存示例

import functools


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


在上述代码中,@functools.lru_cache(maxsize=128)装饰器应用于fibonacci函数。maxsize参数指定缓存可以存储的最大项数,设置为None时表示缓存大小无限制。这样,每次调用fibonacci函数时,如果参数已经在缓存中,就直接返回缓存的结果,大大提升了函数性能,尤其是在计算斐波那契数列这种递归调用开销较大的场景。