可扩展的缓存集合和装饰器
项目描述
此模块提供各种缓存集合和装饰器,包括 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()
对于此模块而言,一个 缓存 是一个固定最大大小的可变 可变 映射。当缓存满时,即添加另一个项目将使缓存超过其最大大小时,缓存必须根据合适的 缓存算法 选择要丢弃的项目。通常,缓存的大小是其项目的总大小,而项目的大小是其值的属性或函数,例如 sys.getsizeof(value) 的结果。对于每个项目计为 1 的简单但常见情况,缓存的大小等于其项目数,或 len(cache)。
实现了基于不同缓存算法的多个缓存类,并提供易于缓存函数和方法调用的装饰器。
安装
cachetools 可从 PyPI 获取,并且可以通过运行以下命令安装:
pip install cachetools
此包的类型存根由 typeshed 提供,并且可以通过运行以下命令安装:
pip install types-cachetools
项目资源
许可证
版权所有 (c) 2014-2021 Thomas Kemmer。
根据 MIT 许可证授权。
项目详情
关闭
cachetools-chrisglass-4.2.4.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f7f1191b8ea4b9af57c1430de6ca53dc3cc3fdc5cbe57d453f58ecca0f9e0b1e |
|
MD5 | 40a0e7d07ef69fff0d4bc0748149da2c |
|
BLAKE2b-256 | fb5fb1f87a1b195d582f64c24ff348291533b7908779b727e168e0267691bac5 |