python的缓存库(cacheout)
## 链接
* 项目: https://github.com/dgilland/cacheout
* 文档地址: https://cacheout.readthedocs.io
* PyPI(下载链接): https://pypi.python.org/pypi/cacheout/
* TravisCI(下载链接): https://travis-ci.org/dgilland/cacheout
## 特性
* 后端使用字典进行缓存
* 使用缓存管理轻松访问多个缓存对象
* 当使用模块级缓存对象,重构运行时的缓存设置
* 最大缓存大小限制
* 默认的缓存时间设置以及缓存项自定义存活时间
* 批量的设置、获取、删除操作
* 线程安全
## 多种缓存机制的实现
* FIFO(先进先出)
* LIFO(后进先出)
* LRU (最近最少使用机制)
* MRU (最近最多使用机制)
* LFU (最小频率使用机制)
* RR (随机替换机制)
## 线路图
* 层级缓存(多层级缓存)
* 支持缓存事件监听
* 获取缓存对象时的常规表示方法
* 获取缓存对象不存在时的回调处理支持
* 统计缓存
## 要求
Python >= 3.4
## 安装
```
pip install cacheout
```
## 使用
```python
In [1]: from cacheout import Cache
In [2]: cache = Cache()
In [5]: cache.set(1, 'foo', ttl=10)
In [6]: cache.get(1)
Out[6]: 'foo'
In [10]: cache.delete(1)
Out[10]: 1
```
## 缓存计算结果
![](http://om4h63cja.bkt.clouddn.com/img20181014161237.png)
### 计算斐波那契数列
开启缓存后,速度提高若干个数量级
```python
#!/usr/bin/env python
# python3
import time
from cacheout import Cache
cache = Cache()
start = time.time()
@cache.memoize()
def fib(n):
if n == 1 or n ==2 :
return 1
else:
return fib(n-1) + fib(n-2)
# 解除某个结果的缓存
fib.uncached(1)
# 清除缓存
cache.clear()
cost = time.time() - start
print("cost {}s, {}".format(cost, fib(200)))
```
- 前言
- 环境搭建
- pypi
- 打包
- Python 2 和 Python 3 的版本之间差别
- 项目
- 第一部分
- 第1章 基础
- Python安装
- python代码文件类型
- python对象
- 核心数据类型
- 核心数据类型--整型和浮点型
- 核心数据类型--字符串
- str.format
- 核心数据类型--列表
- 核心数据类型--元组
- 核心数据类型--字典
- 核心数据类型--集合
- 核心数据类型--文件对象
- 调用bash
- 标准输入输出
- str-repr
- 字符编码
- 迭代器和生成器
- 第2章 语句和语法
- 赋值语句
- if语句
- while语句
- for语句
- assert
- 第3章 函数
- 函数作用域
- 工厂函数
- 内置函数
- 递归
- 嵌套作用域和lambda
- 参数传递
- 函数式编程
- property可写与可读
- 第5章 模块
- 模块导入
- 模块命名空间
- 相对导入和绝对导入
- 模块重载
- 在模块中隐藏数据
- 过渡性重载
- 第6章 类
- 面向对象还是面向过程?
- 构造函数 析构函数
- call
- 运算符重载
- str()
- 待定
- 即时生成属性
- 多态
- 线程和进程
- thread模块
- threading模块
- threading线程锁
- 糖果机
- multiprocessing
- 阻塞非阻塞同步异步
- 单线程和多线程对比
- 生产者消费者模型
- 第二部分
- 获取系统资源信息
- 获取进程所占的物理内存
- dmidecode获取系统信息
- 网络编程
- 网络基础
- python中的套接字
- socket模块
- 第三部分 高级功能
- 闭包入门
- 闭包的应用
- 装饰器入门
- 装饰器应用
- 第四部分 项目实战
- graphite
- 模块
- collections
- datetime
- Enum
- faker
- fabric
- fileinput
- fire
- fnmatch
- getpass
- glob
- hashlib
- heapq
- json模块
- log
- os
- Paramiko
- parser
- platform
- pyyaml
- Queue
- random
- re
- 特殊符号和字符
- re模块
- shelves
- subprocess
- time
- urllib_urllib2_requests
- urllib urllib2
- requests
- 标准模块ConfigParser
- 扩展模块Mysqldb
- 扩展模块dns
- 扩展模块request
- uuid
- cacheout 缓存库
- delorean 时间
- 附录
- 内置函数
- python实现各种排序算法
- 常见报错
- pymongo
- pyrocksdb
- 常用
- ERROR