跳转到主要内容

计算/存储成本节约的缓存

项目描述

分析计算缓存

人类会重复做事情。缓存有助于。

正常的缓存策略,如LRU,并不适用于分析计算,因为在分析计算中,重新计算的代价和存储的代价通常会随着一百万或更多而变化。考虑以下计算

# Want this
np.std(x)        # tiny result, costly to recompute

# Don't want this
np.transpose(x)  # huge result, cheap to recompute

Cachey尝试保留具有以下特性的值

  1. 重新计算代价高昂(以秒计)
  2. 存储成本低(以字节计)
  3. 经常使用
  4. 最近使用

它通过在每个访问的项目得分上添加以下内容来实现这一点。

score += compute_time / num_bytes * (1 + eps) ** tick_time

对于一些小的ε值(它决定了内存半衰期)。这个值的单位是倒数带宽,旧结果的指数衰减和重复结果的粗略线性放大。

示例

>>> from cachey import Cache
>>> c = Cache(1e9, 1)  # 1 GB, cut off anything with cost 1 or less

>>> c.put('x', 'some value', cost=3)
>>> c.put('y', 'other value', cost=2)

>>> c.get('x')
'some value'

它还有一个memoize方法。

>>> memo_f = c.memoize(f)

状态

Cachey是新的,并且不够稳健。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

cachey-0.2.1.tar.gz (6.5 kB 查看散列值)

上传时间

构建分布

cachey-0.2.1-py3-none-any.whl (6.4 kB 查看散列值)

上传时间 Python 3

由支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面