2013-06-26 9 views
2

Учитывая большую (4.5 GB) базу данных тестирования python, выполнение которой включает в себя много десятков файлов, многие из которых не являются непосредственно разборчивыми, можно ли перенести первоначальное выполнение программы в одну строку, создать Stackless тасклета вокруг этой функции и во время выполнения рассортировать тасклет как способ сохранения состояния всей программы? Каков предел способности Stuckless для таблеток?Использование Stackless Python для сохранения состояния большой запущенной программы?

ответ

2

Это действительно представляет собой возможность Stackless Pickling

Одной из главных особенностей Stackless является его способность протравить и unpickle тасклеты. Это означает, что запущенная программа внутри тасклета может быть постоянно сохранена в файле или строке. Позже он может быть восстановлен снова и может продолжаться в том месте, где он был ранее остановлен. Это не обязательно должно быть на одной машине !:

Так что на наш вопрос «возможно ли» ответ «да».

В качестве «того, как это сделать», я думаю, что приведенная выше ссылка представляет собой конкретный пример. Попробуйте и отправьте другой вопрос, если он не работает. Учитывая размер вашей базы кода (4.5 ГБ Python источник файлы довольно огромные!), Может быть, вы достигнете пределов Stackless?

2

Чтобы быть более конкретным: Stackless добавляет поддержку травильного ряда встроенных элементов, такие как исполнения фреймов и модули и другое выполнение объектов Однако код, такие как классы, функция и модули, все маринованные по названию , Это означает, что на другой машине одни и те же объекты должны быть доступны через механизм импорта.
Другими словами, состояние маринованного выполнения будет содержать текущие локальные переменные и все такое, но содержимое объектов кода или модулей не будет отображаться. Они должны быть доступны по имени, когда государство не заполнено.