通俗地說,什麼是「序列化」,爲什麼我需要它? 我讀過維基百科條目,但仍然不明白。 爲什麼我需要將數據轉換爲一系列位來存儲在一個文件中?我特別關心使用Python的pickle
模塊進行序列化。Pickle Python序列化
謝謝你的時間!
通俗地說,什麼是「序列化」,爲什麼我需要它? 我讀過維基百科條目,但仍然不明白。 爲什麼我需要將數據轉換爲一系列位來存儲在一個文件中?我特別關心使用Python的pickle
模塊進行序列化。Pickle Python序列化
謝謝你的時間!
您可以保存(特定對象的)程序的狀態。想象一下,你有一個運行了幾個小時甚至幾天的程序。使用pickle你可以保存計算的狀態,如果你願意的話,可以殺掉程序並在稍後恢復計算。
您甚至可以將保存的對象發送給其他人,他們可以恢復計算或查看結果。
我有時會醃製userpreferences或(在測驗中)上次詢問哪些問題以及給出了什麼答案。
讓我嘗試用一些例子來解釋......
您需要通過字典來運行你的Python環境的(可能其他一些項目或一些其他機器)其他Python過程..
somelist = {1:1,2:2,3:3}
你怎麼能通過這個字典到這個過程?你無法將其轉換爲字符串,即使你做到了,你不能將其轉換回其原來的形式...
如果醃製這本字典,它會給你
dumps({1: 1, 2: 2, 3: 3})
'(dp1\nI1\nI1\nsI2\nI2\nsI3\nI3\ns.'
其中有繩子狀結構......所以,你可以通過郵寄,或者其他什麼東西送這個......和接收器可以unpickle它來獲取原始對象...
loads('(dp1\nI1\nI1\nsI2\nI2\nsI3\nI3\ns.')
{1: 1, 2: 2, 3: 3}
對於這個任務'json','yaml'或'xml'可能是一個更好的選擇:不是python特有的,它們可以用任何現代計算機語言閱讀。 json/yaml具有人類可讀性更好的優勢,而xml可能更適合複雜結構。 JSON和XML庫附帶Python標準分發。 – 2015-03-23 05:40:10
產生一些統計數據,但沒有太多的程序它使得使用數據庫是矯枉過正。
例如,基準程序選擇最佳算法。
完成後繪製一張圖。現在你可能不喜歡圖的繪製方式。您可以醃製結果,然後在另一個腳本中取消選擇(也許在執行幾個後續基準測試後),並根據需要微調可視化。
你能定義「程序狀態」嗎?國家是什麼意思? @你的例子(我非常感謝):你的意思是循環例如運行1.000.000,我可以停在500.000,並恢復?是嗎? – MacPython 2010-11-05 13:54:03
你可以安全的對象,你可以在你的例子中安全的櫃檯。發電機不可選。但是如果你想使用牛頓逼近逼近一個函數的零點,你可以保存你的最新結果,然後再次加載它來做另一個千周期。 – 2010-11-05 14:42:27