Python缓存框架
项目描述
一个Python缓存框架。
与其他知名示例不同,它使用运行时跟踪而不是解析或元评估来构建函数依赖的有向无环图。
必须显式地从缓存中卸载数据,但通过支持嵌套缓存上下文使其变得更容易。
Dug支持手动更改跟踪函数的某些参数的返回值。
Dug代表有向非循环图。我知道非循环不是一个真正的词。
安装
Dug可以从PyPI安装
入门
组件
- 缓存
在进入上下文时创建
用拥有上下文中的调整填充
不支持在父缓存上重建,必须从上下文中存储的调整重新创建。
不应将更改转发给父缓存。在父缓存中具有与子缓存不同值的节点应标记为屏蔽。
识别节点
节点标识符必须是可序列化的。节点标识符只保留对函数的引用,并依赖pickle或其他方式来处理传输格式可能是合理的。
堆叠的上下文、调整和缓存失效
规则:调整过的节点被屏蔽。依赖于屏蔽节点的节点也被屏蔽。标记为屏蔽的节点不应从父上下文中获取。标记为屏蔽的节点的结果应存储在当前上下文的缓存中。节点可以被标记为屏蔽并存储在缓存中。节点也可以被标记为屏蔽但不存储在缓存中。
调整节点
在调整节点时,必须标记所有其后代为屏蔽。这可以通过递归完成。当遇到已经标记为屏蔽的节点时,可以假设其所有后代也已标记为屏蔽。这意味着不需要越过它进行递归。
重新进入上下文
有可能在重新进入上下文时,父上下文已经改变。很可能总是需要重新调整上下文中的所有节点。
为了适应新的父上下文的变化,必须使缓存的部分失效。可能只需使父上下文中标记为屏蔽的部分失效。可能总是有在退出上下文时清除缓存的必要。这可以使上下文作为避免过度缓存的一种方式。
垃圾收集
有人建议垃圾收集可能实际上并不必要。相反,依赖丢弃上下文以对保留什么内容有更精细的控制。
问题
是否有将调整与缓存分离的方法?
项目详情
关闭
dug-0.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1446438f5ac8dde1cc40b56420c57548dc620a2547ed8a44eb606a61456d7b4c |
|
MD5 | d721724014c4fd185dea611b904429e6 |
|
BLAKE2b-256 | bfddedafeed7429eebd7e45b87465be90b027715f426319195a5b86c9a907a51 |