带超时的备忘录

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/)




欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java SimpleCursorAdapter删除值   java结束while循环条件   java检查设备是否连接到特定网络   java组织。冬眠MappingException找不到逻辑名称为annotation getter的列   为什么java邮件中会抛出此异常?   加载SDK时发生java Eclipse错误   返回奇怪输出的Java数组   JavaXStream和对象类序列化   将枚举列表传递给namedQuery后出现java非法转换异常。Hibernate中的setParameter()   java Android studio不允许我在字符串上使用开关?   有没有办法从Java程序访问存储在Chrome中的cookie   java在枚举中构造实例而不修改枚举类   java Blackberry JDE FieldChangeListener   java修复错误:未报告的异常InterruptedException   java Spring数据JPA:findAll(具有规范和可分页)在计数查询中失败