the5fire

关注Python、Django、Vim、Linux、Web开发、团队管理和互联网--Life is short, we need Python.


分享一个LRUCache(python实现)

作者:the5fire | 标签:     | 发布:2013-01-20 9:58 p.m. | 阅读量: 16703, 15711

下面要分享的这个LRUCache不是我做的,是github上的一个库,我们在实际环境中有用到。

先来说下这个概念,cache的意思就是缓存,LRU就是Least Recently Used,即最近最少使用,是一种内存管理算法。总结来说这就是一种缓存方法,基于时间和容量。

一般在简单的python程序中,遇到需要处理缓存的情况时最简单的方式,声明一个全局的dict就能解决(在python中应尽量避免使用全局变量)。但是只是简单情况,这种情况会带来的问题就是内存泄漏,因为可能会出现一直不命中的情况。

由此导致的一个需求就是,你要设定这个dict的最大容量,防止发生泄漏。但仅仅是设定最大容量是不够的,设想当你的dict变量已被占满,还是没有命中,该如何处理。

这时就需要加一个失效时间了。如果在指定失效期内没有使用到该缓存,则删除。

综述上面的需求和功能就是LRUCache干的事了。不过这份代码做了更进一层的封装,可以让你直接把缓存功能做为一个装饰器来用。具体实现可以去参考代码,别人实现之后看起来并不复杂 :)

代码: https://github.com/the5fire/Python-LRU-cache/blob/master/lru.py

从python3.2开始内置在functools了lru_cache的功能,说明这个需求是很普遍的。

- from the5fire.com
----EOF-----

微信公众号:Python程序员杂谈

【上一篇】 什么是pypy?
【下一篇】 番茄工作法分享

其他分类: