通俗地说,什么是“序列化”,为什么我需要它? 我读过维基百科条目,但仍然不明白。 为什么我需要将数据转换为一系列位来存储在一个文件中?我特别关心使用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