2016-11-11 2 views
1

Я написал некоторый код в Matlab, где область переменных, выполняемых в сценариях, сохраняется в «рабочей области». Данные, над которыми я работаю, очень большие, поэтому для каждого выполнения сценария требуется 20-30 минут для получения необходимых результатов. Преимущество Matlab заключалось в том, что после выполнения, если бы я хотел добавить код в конец скрипта, я могу выполнить его с переменными результата, а не с повторного запуска кода с самого начала.Сохранение пространства имен и значений переменных после выполнения сценария

Как я могу сделать что-то подобное в Python, где значения переменных сохраняются от одного сценария к другому?

+2

https://ipython.org/notebook.html –

+0

Я перефразировал ваш вопрос и заголовок, чтобы лучше понять, что я думаю, что вы имели в виду. Не стесняйтесь откатываться, если я что-то не понял. – skrrgwasme

ответ

0

Если я правильно понял вас.

Я думаю, что лучший выбор - использовать оболочку python напрямую, не записывая скрипт в файл, а затем запускать его.

2-й выбора травление или объект сериализация:

«Травление» представляет собой процесс, посредством которого объект иерархия Питона преобразуется в поток байт, и «unpickling» является операцией обратного , в результате чего байт поток преобразуется обратно в объект иерархии.

"Python object serialization"

+0

Уверен, что это возможно, но я не думаю, что это очень практично, если вычисления достаточно сложны, чтобы занять 20-30 минут. – skrrgwasme

+0

Я думаю, что это зависит от формата и визуализации кода, а не от времени выполнения. – anati

1

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

1

Вы действительно хотите запустить интерактивную оболочку python. Это то, что вы делаете в MATLAB, все скрипты работают внутри одной оболочки MATLAB. Вот почему переменная сохраняется в разных записях, потому что оболочка сохраняет их.

Разница с python заключается в том, что он имеет два способа запуска скриптов: в оболочке python или в автономном режиме. Вы используете их автономно в python, что не является вариантом в MATLAB.

Если вы хотите что-то как можно ближе к тому, что вы делаете в MATLAB, просто заверните код в свой скрипт в функцию, запустите оболочку python и запустите функцию.

Однако, как правило, это не лучший подход для долгого, повторяющегося кода, как вы делаете. Намного лучше будет использовать ноутбук IPython/Jupyter. Этот интерфейс позволяет выборочно запускать части вашего кода, реорганизовывать детали и многие другие полезные функции. Он также имеет функцию, которая позволяет автоматически сохранять определенные переменные в сеансах.

Смежные вопросы