带超时的备忘录
mwt的Python项目详细描述
#memoize with timeout
超时对于确保高速缓存不会无限增长非常重要,而且由于其不易受到抖动,因此具有节省长度的优势。
$pip install mwt
从git安装:
$pip install-u git+git://github.com/…
<<
最简单的方法,就是简单地用mwt装饰你的方法:
import timeit
import timeit
@mwt-import-mwt-mwt
@mwt-import-mwt-mwt-import-mwt-mwt
a,b=b,a+b
def test():
fibonacci(5)
数字=1)
pi@pi:/tmp$python fib.py
0.470113992691
4.10079956055e-05
3.5047531129e-05
3.88622283936e-05
2.59876251221e-05
这并不意味着你应该这样做。
mwt decorator是一种在
计算中快速而简单地重新缩短延长时间的方法,但根据定义,它并不完美:在
备忘录中隐含的备忘录和垃圾收集过程中存在开销,
并且在使用过程中要小心。
注意执行的总时间,其次是缓存命中率:如果命中率很小,那么净效果是增加开销,而不是减少开销。
第一个
最明显的是分析计时,并查看添加decorator是否节省了总时间
。另一个是在包含的代码运行一段时间后分析缓存统计信息。mwt提供了一个stats接口来帮助实现这一点,
它可以像这样使用:
打印(fmt%(“缓存”、“长度”、“命中”、“未命中”、“清除”、“超时”、“硬件”))
stats=mwt.stats()
对于stats in stats:
打印(fmt%(stat[“缓存”],stat[“length”]、stat[“hits”]、
stat[“misses”]、stat[“purged”]、stat[“timeouts”]、
stat[“hwm”])
这将产生类似这样的输出,这将使您能够看到
对于每个
修饰的函数,记录过程是如何有效的:
未命中清除的超时hwm
opc.hue:rgbtohsv 0 0 0 0 0
opc.hue:hue 0 0 0 0 0
opc.hue:hsvtorgb 27167 32785 270 5103 0 27183
好吧。
如果比率很低,那么不要马上放弃:通过调整目标方法的调用参数(例如,将一个浮点值限定为两个
的精度数字。
\contribution
请阅读[contribution.md](https://gist.github.com/purplebooth/b24679402957c63ec426)了解我们行为准则的详细信息,以及向我们提交请求的过程。
有关可用版本,请参阅[此存储库上的标记](https://github.com/your/project/tags)。
参与了这个项目。
配方](http://code.activestate.com/recipes/325905 memoize decorator with timeout/)
超时对于确保高速缓存不会无限增长非常重要,而且由于其不易受到抖动,因此具有节省长度的优势。
$pip install mwt
从git安装:
$pip install-u git+git://github.com/…
<<
最简单的方法,就是简单地用mwt装饰你的方法:
import timeit
import timeit
@mwt-import-mwt-mwt
@mwt-import-mwt-mwt-import-mwt-mwt
a,b=b,a+b
def test():
fibonacci(5)
数字=1)
pi@pi:/tmp$python fib.py
0.470113992691
4.10079956055e-05
3.5047531129e-05
3.88622283936e-05
2.59876251221e-05
这并不意味着你应该这样做。
mwt decorator是一种在
计算中快速而简单地重新缩短延长时间的方法,但根据定义,它并不完美:在
备忘录中隐含的备忘录和垃圾收集过程中存在开销,
并且在使用过程中要小心。
注意执行的总时间,其次是缓存命中率:如果命中率很小,那么净效果是增加开销,而不是减少开销。
第一个
最明显的是分析计时,并查看添加decorator是否节省了总时间
。另一个是在包含的代码运行一段时间后分析缓存统计信息。mwt提供了一个stats接口来帮助实现这一点,
它可以像这样使用:
stats=mwt.stats()
对于stats in stats:
打印(fmt%(stat[“缓存”],stat[“length”]、stat[“hits”]、
stat[“misses”]、stat[“purged”]、stat[“timeouts”]、
stat[“hwm”])
这将产生类似这样的输出,这将使您能够看到
对于每个
修饰的函数,记录过程是如何有效的:
未命中清除的超时hwm
opc.hue:rgbtohsv 0 0 0 0 0
opc.hue:hue 0 0 0 0 0
opc.hue:hsvtorgb 27167 32785 270 5103 0 27183
好吧。
如果比率很低,那么不要马上放弃:通过调整目标方法的调用参数(例如,将一个浮点值限定为两个
的精度数字。
\contribution
请阅读[contribution.md](https://gist.github.com/purplebooth/b24679402957c63ec426)了解我们行为准则的详细信息,以及向我们提交请求的过程。
有关可用版本,请参阅[此存储库上的标记](https://github.com/your/project/tags)。
参与了这个项目。
配方](http://code.activestate.com/recipes/325905 memoize decorator with timeout/)