日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python每天八分钟教程_每天八分钟Python基础教程——对象持久化、序列化

發布時間:2023/12/15 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python每天八分钟教程_每天八分钟Python基础教程——对象持久化、序列化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前,在使用Python開展數據分析的過程中,經常會遇到需要基于同一份中間結果分別做不同維度的分析統計,開始我們做的思路是每次都重新計算,后來發現在TB級別的數據背景下這種操作是非常浪費算力的,考慮到需要做數據序列化、持久化。

在實際應用中也分別使用過pickle、json、shelve三種模塊來實現數據序列化。接下來與大家分享這三者的具體應用與異同。

簡單講,這三者都可以實現Python大多數對象的序列化(持久化),只是實現和應用的背景有所不同。序列化的好處是把計算處理得到的數據持久化的保存下來,當重復使用時直接通過load把數據加載到內存就可以了,避免了中間結果的重復計算,或者數據格式的重復轉換。

cPickle模塊

在Python中,一般使用pickle類來進行python對象的序列化,同時cPickle(C語言編譯版本)提供了一個更快速簡單的實現,如官方文檔所說的:"cPickle – A faster pickle",其速度大概是pickle的1000倍,因此在大多數應用程序中通常優先使用cPickle (cPickle 除了不能被繼承之外,它與pickle使用基本上區別不大)。

cPickle可以對任意一種類型的Python對象進行序列化操作,比如list,dict,甚至是一個類的對象等。

在cPickle中,我們使用下面方式把數據持久化至文件中:

dump函數—序列化

需要指定兩個參數,第一個是需要序列化的python對象名稱,第二個是本地的文件,需要使用open函數以"寫"模式打開文件。

持久化的data.pickle文件如下:

data.pickle

load函數—反序列化

載入本地文件,加載為Python對象,加載出來的對象無須進行格式轉換。如果通過一般寫入的方式實現數據的持久化,那么在讀出數據時,需要額外進行數據類型的轉換。

請注意,cPickle是python2 的庫,在python3.x版本,改名為pickle。

cPickle的缺點

pickle模塊使用的數據格式是Python專用的,并且不同版本不向后兼容,同時也不能被其他語言說識別。

使用pickle存在安全風險,切勿反序列化不受信任或未經身份驗證的pickle字節串,比如通過代碼獲得文件列表,進一步也可以獲取文件操作等權限:

因此 pickle 方案不適合用于網絡通信,可以改用另一種序列化方式,如JSON。

json模塊

json模塊我們使用將數據保存到文件中,以及直接讀取文件中的數據進行反序列化操作。

總結

以上是生活随笔為你收集整理的python每天八分钟教程_每天八分钟Python基础教程——对象持久化、序列化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。