在程序運(yùn)行的過(guò)程中,所有的變量都是在內(nèi)存中,有時(shí)候希望將對(duì)象存儲(chǔ)下來(lái)。我們把對(duì)象從內(nèi)存中變成可存儲(chǔ)或傳輸?shù)倪^(guò)程稱(chēng)之為序列化,在Python中叫pickling。
pickle
Python提供兩個(gè)模塊來(lái)實(shí)現(xiàn)序列化:
cPickle
和
pickle
。這兩個(gè)模塊功能是一樣的,區(qū)別在于
cPickle
是C語(yǔ)言寫(xiě)的,速度快,
pickle
是純Python寫(xiě)的,速度慢。
將對(duì)象保存為字符串
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}]
將對(duì)象保存為文件
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庫(kù)是由scikit-learn外帶的,常用于保存機(jī)器學(xué)習(xí)模型。對(duì)于大數(shù)據(jù)而言,joblib比pickle更加高效,但是joblib只能將對(duì)象存儲(chǔ)在磁盤(pán)文件中,不能保存為字符串。
from sklearn.externals import joblib
a1 = ['abc', [1, 2], {'x': 3}]
joblib.dump(a1, 'a1.txt')
a2 = joblib.load('a1.txt')
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
