姜鹏辉的个人博客 GreyNius

【Python】持久化Python中的变量

2020-03-18

Cpickle && pickle

cPickle是用C语言实现的,pickle是用纯python语言实现的,相比,cPickle的读写效率高一些。

尝试导入

try:
    import cPickle as pickle
except ImportError:
    import pickle

保存变量

dir = {bird:0,pig:1,cat:2,dog:3}
f = open('animal.pkl','wb')
pickle.dump(dir,f)
f.close()

joblib

文档:https://joblib.readthedocs.io/en/latest/
相比于pickle更加高效

from joblib import *

变量持久化

Python中的变量存储到本地,例

dump(value,filename)

参数:

  • value 变量名
  • filename 文件名
  • compress 整数类型0-9或布尔值,数字越大压缩效果越好,但速度越慢(文件后缀‘.z’, ‘.gz’, ‘.bz2’, ‘.xz’ ,‘.lzma’)
  • protocol 1是使用老的二进制协议,2是使用新的二进制协议

变量提取

value = load(file_name)

函数结果缓存

缓存某一个函数的运行结果,再次调用此函数且参数相同时,不用重新计算

from joblib import Memory
cachedir = 'your_cache_dir_goes_here'
mem = Memory(cachedir)
import numpy as np
a = np.vander(np.arange(3)).astype(np.float)
square = mem.cache(np.square)
b = square(a)   
### 再次运行命令时不会重新计算
c = square(a)

Comments

Content