【问题标题】:Is it possible to save entire interpreter state into the file?是否可以将整个解释器状态保存到文件中?
【发布时间】:2020-05-07 13:13:10
【问题描述】:

我想使用解释器,然后当希望停止时,将其整个状态保存到文件中。我不想介意要保存什么。例如,我不想列出变量。我希望它自动保存所有内容。

明天我希望重新打开保存的状态并继续从同一个地方操作。

Jupyter 之类的各种 notebook 都不适用,因为它们只能重新执行我的命令来恢复状态,这可能需要一些时间,我希望避免。

任何其他具有此功能的成熟解释语言都值得赞赏。

【问题讨论】:

  • stackoverflow.com/questions/14519100/…;这是你要找的吗?介意我问一下你的程序到底是做什么的?
  • 这能回答你的问题吗? How to save a Python interactive session?
  • @puppydog 它声明它保存异常跟踪。我的情况没有例外。另外,我需要通用的东西,它独立于我的程序所做的工作。
  • @mkrieger1 我需要保存状态,例如我在变量A中训练了一个网络,我明天需要从这个A开始。

标签: python python-3.x state interpreter


【解决方案1】:

您可以使用dill 来保存和加载使用dill.dump_sessiondill.load_session 的python 解释器会话。

来自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 还不能腌制一些标准类型,所以你必须自己尝试看看它是否适合你。

【讨论】:

  • 在 load_session 命令之后,我希望变量 x,y,z 可用,但它们不可用,我得到UnboundLocalError: local variable 'x' referenced before assignment 任何想法?
  • @ps0604 更新了示例,dump_session 未被调用
  • 我调用dump_session 并且文件生成正确,但即使在load_session 之后我仍然收到相同的错误消息,有什么想法吗?
【解决方案2】:

我编写了一个称为状态保存解释器的算法,它将 List Prolog 解释器的状态(包括谓词和命令的变量和递归状态)保存在 https://github.com/luciangreen/SSI。我将使用它来开发 Web 应用程序,甚至是在线 Prolog 解释器。 Prolog 应用程序可以移植到网络上,这需要保存解释器状态才能运行应用程序。

【讨论】:

    猜你喜欢
    • 2013-01-09
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    相关资源
    最近更新 更多