计算/存储成本节约的缓存
项目描述
分析计算缓存
人类会重复做事情。缓存有助于。
正常的缓存策略,如LRU,并不适用于分析计算,因为在分析计算中,重新计算的代价和存储的代价通常会随着一百万或更多而变化。考虑以下计算
# Want this
np.std(x) # tiny result, costly to recompute
# Don't want this
np.transpose(x) # huge result, cheap to recompute
Cachey尝试保留具有以下特性的值
- 重新计算代价高昂(以秒计)
- 存储成本低(以字节计)
- 经常使用
- 最近使用
它通过在每个访问的项目得分上添加以下内容来实现这一点。
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 查看散列值)
关闭
cachey-0.2.1.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 0310ba8afe52729fa7626325c8d8356a8421c434bf887ac851e58dcf7cf056a6 |
|
MD5 | 25f1e2038b319badf1ba0469b8f6d27e |
|
BLAKE2b-256 | c69ce3c959c1601013bf8a72e8bf91ea1ebc6fe8a2305bd2324b039ee0403277 |
关闭
cachey-0.2.1-py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 49cf8528496ce3f99d47f1bd136b7c88237e55347a15d880f47cefc0615a83c3 |
|
MD5 | da4c687f69d948f07b48eb28137cce5e |
|
BLAKE2b-256 | 57f0e24f3e5d5d539abeb783087b87c26cfb99c259f1126700569e000243745a |