python实现简单的LRU(Least Recently Used)
来源:互联网 发布:淘宝的淘龄是怎么算的 编辑:程序博客网 时间:2024/05/03 08:48
LRU通常在讲操作系统分页置换的方法中提及,但其实他还是种很好的内存调度算法。
PyPI和网上有各种版本,但觉得都略复杂,因此写个简化版。
# -*- coding: utf-8 -*-from collections import OrderedDict__all__ = ['LRUCache', ]class LRUCache(dict): '''简单lru队列实现''' def __init__(self, size = None): self.buff_size = 100 if size is None else size self.__cache = OrderedDict() def __getitem__(self, *args, **kwargs): _key = args[0] if _key in self.__cache: self.__cache[_key] = self.__cache.pop(_key) return self.__cache.get(_key, None) def __setitem__(self, *args, **kwargs): _key, _value = args if _key in self.__cache: self.__cache.pop(_key) elif self.buff_size == len(self.__cache): self.__cache.popitem(last = False) self.__cache[_key] = _value def __contains__(self, *args, **kwargs): return self.__cache.__contains__(*args, **kwargs) def __delitem__(self, *args, **kwargs): return self.__cache.__delitem__(*args, **kwargs) def __repr__(self, *args, **kwargs): return dict(self.__cache).__repr__(*args, **kwargs) def items(self, *args, **kwargs): return self.__cache.items(*args, **kwargs) def values(self, *args, **kwargs): return self.__cache.values(*args, **kwargs) def keys(self, *args, **kwargs): return self.__cache.keys(*args, **kwargs) if __name__ == '__main__': test_cache = LRUCache(3) for num in range(5): test_cache[num] = num print(test_cache)
阅读全文
0 0
- python实现简单的LRU(Least Recently Used)
- LRU (Least Recently Used)
- LRU(Least recently used)
- LRU(Least Recently Used)
- LRU (Least Recently Used) 算法的Java实现
- Least Recently Used(LRU) Cache
- LRU(Least Recently Used)缓存介绍与实现
- 晦涩的翻译LRU (Least Recently Used) - 最近最少使用?
- 请用Java设计一个Least Recently Used (LRU) 缓存
- 请用Java设计一个Least Recently Used (LRU) 缓存
- Java应用缓存介绍与LRU(Least Recently Used)算法
- LRU(least recently used)内存淘汰旧数据
- 利用LinkedHashMap实现一个简单的LUR(Least Recently Used 近期最少使用算法)的cache的两种方法
- leetcode_Design and implement a data structure for Least Recently Used (LRU) cache
- LRU(Least Recently Used)最近最少使用页面置换算法
- python实现简单的LRU算法
- 使用LRU(last recently used)算法淘汰数据实例(阿里巴巴例题)
- Lru缓存的简单实现
- 程序员的八重境界
- 单例设计模式之破坏
- angular2-学习笔记(二)
- 阿里云-移动推送集成及要点
- Vue2学习笔记:事件对象、事件冒泡、默认行为
- python实现简单的LRU(Least Recently Used)
- Express,mysql,ejs搭建简单电影网站
- web从零开始-01
- Vue 进阶教程之:非父子组件通信方法(非Vuex)
- CentOS6.5 安装VMware Tools
- eclipse安装ADT和SDK
- jQuery AJAX XMLHttpRequest方法 请求数据
- JDiy与DWR组合的时候出现网页无法访问(404异常)的问题
- crawl spider的使用