跳转到主要内容

可扩展的缓存集合和装饰器

项目描述

Latest PyPI version Documentation build status CI build status Test coverage License Code style: black

此模块提供各种缓存集合和装饰器,包括 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 (26.7 kB 查看哈希值)

上传时间

由以下提供支持