2010-11-05 2 views
1

В терминах непрофессионала, что такое «сериализация» и зачем мне это нужно? Я прочитал запись в Википедии, но все еще не понимаю. Зачем мне нужно преобразовывать данные в последовательность битов, чтобы сохранить их в файле? Я специально занимаюсь использованием модуля pickle Python для сериализации.Pickle Python Serialization

Спасибо за то же время!

ответ

2

Вы можете сохранить состояние программы (определенных объектов). Представьте, что у вас есть программа, которая работает в течение многих часов или даже дней. Используя pickle, вы можете сохранить состояние вычисления, убить программу и возобновить вычисление позже, если хотите.

Вы даже можете отправлять сохраненные объекты другим людям, которые могут возобновить расчет или просмотреть ваши результаты.

Я иногда разбираю пользовательские справки или (в викторине), какие вопросы задали в последний раз и какие ответы были даны.

+0

Можете ли вы определить «Состояние программы». Что означает государство? @ Ваш пример (который я очень ценю): Вы имеете в виду, например, цикл, который выполняется, например, 1.000.000, и я могу остановиться на 500 000, а не резюме? Это оно? – MacPython

+0

Вы можете безопасные объекты, вы могли бы в вашем примере безопасно встретить счетчик. Генераторы не подбираются. Но если вы хотите аппроксимировать нулевую точку функции с использованием Newton-Approximation, вы можете сохранить свой новейший результат, а затем загрузить его снова, чтобы выполнить еще тысячу циклов. –

1

Позвольте мне попытаться объяснить, используя некоторые примеры ...

Вам необходимо пройти словарь какой-то другой процесс питона, который работает из вашего питона среды (возможно, некоторые другие проекта или на другой машине) .. .

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} 
+0

Для этой задачи 'json',' yaml' или 'xml' могли бы стать лучшей альтернативой: они не являются специфичными для python, они могут быть прочитаны на любом современном компьютерном языке. json/yaml имеет преимущество в отношении лучшей удобочитаемости людей, и xml, вероятно, более подходит для сложных структур. json и xml libs поставляются с стандартным дистрибутивом python. –

0

программа, которая производит некоторые статистические данные, но не слишком много из этого, так что использование БД является излишним.

Например, сравнивая программу, чтобы выбрать лучший алгоритм.

По завершении он рисует график. Теперь вам может не понравиться способ рисования графика. Вы распиливаете результаты, затем рассыпаетесь в другом скрипте (возможно, после нескольких последующих тестов) и точно настройте визуализацию по своему усмотрению.