Python2的function cache实现
来源:互联网 发布:linux 创建www用户 编辑:程序博客网 时间:2024/06/03 22:40
今天看到Python3中有lru_cache
的function cache,无聊就试着在Python2.7中实现了一个简单的版本:
#!env python#coding=utf-8# # Author: liuxingen@nsfocus.com# # Created Time: 2017年05月28日 星期日 09时34分06秒# # FileName: test_decorator_cache.py# # Description: # # ChangeLog:from functools import wrapsfrom collections import OrderedDictdef cache(maxsize = 10): def cache_decorator(fn): _cache = OrderedDict() @wraps(fn) def inner(*args, **kwargs): if args in _cache: print 'hit cache!' return _cache.get(args) r = fn(*args, **kwargs) if len(_cache) >= maxsize: _key = _cache.keys()[0] del _cache[_key] print 'queue is full, del _cache[%s]' % (_key) return _cache.setdefault(args, r) return inner return cache_decorator@cache(maxsize = 2)def fn(i): print 'get fn(%d).' % (i) return i*iprint fn(11)print fn(13)print fn(11)print fn(15)print fn(11)print fn(13)
输出如下:
get fn(11).
121
get fn(13).
169
hit cache!
121
get fn(15).
queue is full, del _cache[11]
225
get fn(11).
queue is full, del _cache[13]
121
get fn(13).
queue is full, del _cache[15]
169
阅读全文
0 0
- Python2的function cache实现
- python2:function
- python2动态变量的实现
- LRU cache的实现
- LRU Cache的实现
- LRU Cache的实现
- Web Cache的实现
- LRU Cache的实现
- Cache的设计和实现 LRU Cache
- Cache的设计和实现 LRU Cache
- LRU的cache的实现
- Python2实现的几种排序算法
- cache实现的单例
- HTTP Cache的实现介绍
- LRU cache的简单实现
- LRU Cache的一种实现
- LRU cache的另一种实现
- LRU Cache的C++实现
- java运算符中自增和自减问题
- Java 编程题目 第十七题
- Android源码编译第三方app(Android studio编写项目)如何写Android.mk
- Java 编程题目 第十八题
- ios Scenekit三维开发以及外接SpriteKit二维界面开发
- Python2的function cache实现
- HTML 5 Web 存储
- fiddler抓包软件模拟GET和POST的使用
- linux下xdebug安装
- Java 编程题目 第十九题
- rtmp在ffmpeg中的连接流程
- 北京编程简介
- Java 编程题目 第二十题
- 用Java绘制科赫曲线(koch curve)