Python序列化
什么是序列化?
我們把對(duì)象(變量)從內(nèi)存中變成可存儲(chǔ)或傳輸?shù)倪^程稱之為序列化,在Python中叫pickling,在其他語(yǔ)言中也被稱之為serialization,marshalling,flattening等等,都是一個(gè)意思。
為什么要序列化?
1:持久保存狀態(tài)
需知一個(gè)軟件/程序的執(zhí)行就在處理一系列狀態(tài)的變化,在編程語(yǔ)言中,'狀態(tài)'會(huì)以各種各樣有結(jié)構(gòu)的數(shù)據(jù)類型(也可簡(jiǎn)單的理解為變量)的形式被保存在內(nèi)存中。
內(nèi)存是無(wú)法永久保存數(shù)據(jù)的,當(dāng)程序運(yùn)行了一段時(shí)間,我們斷電或者重啟程序,內(nèi)存中關(guān)于這個(gè)程序的之前一段時(shí)間的數(shù)據(jù)(有結(jié)構(gòu))都被清空了。
在斷電或重啟程序之前將程序當(dāng)前內(nèi)存中所有的數(shù)據(jù)都保存下來(lái)(保存到文件中),以便于下次程序執(zhí)行能夠從文件中載入之前的數(shù)據(jù),然后繼續(xù)執(zhí)行,這就是序列化。
具體的來(lái)說,你玩使命召喚闖到了第13關(guān),你保存游戲狀態(tài),關(guān)機(jī)走人,下次再玩,還能從上次的位置開始繼續(xù)闖關(guān)。或如,虛擬機(jī)狀態(tài)的掛起等。
2:跨平臺(tái)數(shù)據(jù)交互
序列化之后,不僅可以把序列化后的內(nèi)容寫入磁盤,還可以通過網(wǎng)絡(luò)傳輸?shù)絼e的機(jī)器上,如果收發(fā)的雙方約定好實(shí)用一種序列化的格式,那么便打破了平臺(tái)/語(yǔ)言差異化帶來(lái)的限制,實(shí)現(xiàn)了跨平臺(tái)數(shù)據(jù)交互。
反過來(lái),把變量?jī)?nèi)容從序列化的對(duì)象重新讀到內(nèi)存里稱之為反序列化,即unpickling。
轉(zhuǎn)于:http://www.cnblogs.com/linhaifeng/articles/6384466.html
轉(zhuǎn)載于:https://blog.51cto.com/guyuyuan/1926674
總結(jié)
- 上一篇: 新页面,简单的tree视图写法
- 下一篇: 手动爬虫之流程笔记1(python3)