可扩展的缓存集合和装饰器
项目描述
此模块提供各种缓存集合和装饰器,包括 Python 标准库的 @lru_cache 函数装饰器的变体。
from cachetools import cached, LRUCache, TTLCache
# speed up calculating Fibonacci numbers with dynamic programming
@cached(cache={})
def fib(n):
return n if n < 2 else fib(n - 1) + fib(n - 2)
# cache least recently used Python Enhancement Proposals
@cached(cache=LRUCache(maxsize=32))
def get_pep(num):
url = 'https://pythonlang.cn/dev/peps/pep-%04d/' % num
with urllib.request.urlopen(url) as s:
return s.read()
# cache weather data for no longer than ten minutes
@cached(cache=TTLCache(maxsize=1024, ttl=600))
def get_weather(place):
return owm.weather_at_place(place).get_weather()
对于本模块而言,缓存是一个固定最大大小的可变 映射(mapping)。当缓存满时,即添加另一个项目会导致缓存超出其最大大小时,缓存必须基于合适的 缓存算法 选择要丢弃的项。
此模块提供基于不同缓存算法的多个缓存类,以及用于轻松缓存函数和方法调用的装饰器。
安装
cachetools 可从 PyPI 获取,可以通过运行以下命令进行安装
pip install cachetools
此包的类型存根由 typeshed 提供,可以通过运行以下命令进行安装
pip install types-cachetools
项目资源
许可证
版权所有(c)2014-2024 托马斯·凯默。
遵循MIT许可证。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
cachetools-5.5.0.tar.gz (27.7 kB 查看哈希值)
构建分发
cachetools-5.5.0-py3-none-any.whl (9.5 kB 查看哈希值)