Python 持久化模块pickle和joblib

本文详细介绍了Python中对象序列化的方法,包括使用pickle和cPickle模块将对象转换为可存储或传输的形式,以及利用joblib库高效保存大数据集中的机器学习模型。通过实例演示了如何将对象保存为字符串或文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在程序运行的过程中,所有的变量都是在内存中,有时候希望将对象存储下来。我们把对象从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling。

pickle

Python提供两个模块来实现序列化:cPicklepickle。这两个模块功能是一样的,区别在于cPickle是C语言写的,速度快,pickle是纯Python写的,速度慢。

将对象保存为字符串

import pickle
a1 = ['abc', [1, 2], {'x': 3}]
s1 = pickle.dumps(a1)
print(s1)
b'\x80\x03]q\x00(X\x03\x00\x00\x00abcq\x01]q\x02(K\x01K\x02e}q\x03X\x01\x00\x00\x00xq\x04K\x03se.'
a2 = pickle.loads(s1)
print(a2)
['abc', [1, 2], {'x': 3}]

将对象保存为文件

import pickle
a1 = ['abc', [1, 2], {'x': 3}]
with open('a1.txt', 'wb') as f:
    s1 = pickle.dump(a1, f)
with open('a1.txt', 'rb') as f:
    a2 = pickle.load(f)

joblib

joblib库是由scikit-learn外带的,常用于保存机器学习模型。对于大数据而言,joblib比pickle更加高效,但是joblib只能将对象存储在磁盘文件中,不能保存为字符串。

from sklearn.externals import joblib
a1 = ['abc', [1, 2], {'x': 3}]
joblib.dump(a1, 'a1.txt')
a2 = joblib.load('a1.txt')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值