Chinaunix首页 | 论坛 | 博客
  • 博客访问: 212590
  • 博文数量: 37
  • 博客积分: 3082
  • 博客等级: 中校
  • 技术积分: 387
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-14 13:59
文章分类
文章存档

2013年(1)

2012年(1)

2011年(2)

2010年(7)

2009年(1)

2008年(13)

2007年(12)

我的朋友

分类: Python/Ruby

2011-12-28 23:28:34

    淘汰策略很简单,越早插入的数据就越早淘汰。
    当然,如果要弄成LRU也是没有问题的,无非在插入新数据之前,判断key是否已经在dict中,如果存在,那么del后再添加接口。

    注:代码摘抄scrapy

  1. from collections import OrderedDict

  2. class LocalCache(OrderedDict):
  3.     """Dictionary with a finite number of keys.

  4.     Older items expires first.

  5.     """

  6.     def __init__(self, limit=None):
  7.         super(LocalCache, self).__init__()
  8.         self.limit = limit

  9.     def __setitem__(self, key, value):
  10.         while len(self) >= self.limit:
  11.             self.popitem(last=False)
  12.         super(LocalCache, self).__setitem__(key, value)


阅读(3121) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~