Можно ли сохранить в файл все состояние интерпретатора? - PullRequest
1 голос
/ 07 мая 2020

Я хотел бы работать с интерпретатором, а затем, когда wi sh остановится, сохраните его все состояние в файл. Не хочу думать, что экономить. Например, я не хочу перечислять переменные. Я хочу, чтобы он автоматически все сохранял.

Завтра я sh снова открою сохраненное состояние и продолжу работу с того же места.

Различные записные книжки, такие как Jupyter, не применимы, потому что они могут только повторно выполнять мои команды для восстановления состояния , что может занять время, которого я sh избегаю.

Приветствуется любой другой зрелый язык перевода с такой возможностью.

1 Ответ

1 голос
/ 07 мая 2020

Вы можете использовать dill для сохранения и загрузки python сеансов интерпретатора, используя dill.dump_session и dill.load_session .

From docs :

dill предоставляет возможность сохранять состояние сеанса интерпретатора в одной команде. Следовательно, было бы возможно сохранить сеанс интерпретатора, закрыть интерпретатор, отправить обработанный файл на другой компьютер, открыть новый интерпретатор, отобрать сеанс и, таким образом, продолжить работу с «сохраненного» состояния исходного сеанса интерпретатора.

Пример использования dump_session

❯ python
>>> def func(a): 
...     print(a)                                                                                                                                                                                                

>>> class MyClass: 
...     pass                                                                                                                                                                                                    

>>> x,y,z = 1, "hello", [1,2,3]                                                                                                                                                                                 

>>> import dill                                                                                                                                                                                                 

>>> dill.dump_session

Сеанс загрузки:

❯ python
>>> import dill                                                                                                                                                                                                 

>>> dill.load_session()                                                                                                                                                                                         

>>> x,y,z,func,MyClass                                                                                                                                                                                 
(1, 'hello', [1, 2, 3], <function func at 0x10d853d40>, <class '__main__.MyClass'>)

dill пока не может обрабатывать некоторые стандартные типы, поэтому вам нужно попробовать себя посмотрим, сработает ли это для вас.

...