【发布时间】:2011-04-06 15:27:43
【问题描述】:
我偶尔会遇到需要很长时间才能运行的 Python 程序,并且我希望能够保存其状态并在以后恢复。有没有人有一个聪明的方法可以每隔 x 秒保存一次状态,或者在程序退出时保存状态?
【问题讨论】:
我偶尔会遇到需要很长时间才能运行的 Python 程序,并且我希望能够保存其状态并在以后恢复。有没有人有一个聪明的方法可以每隔 x 秒保存一次状态,或者在程序退出时保存状态?
【问题讨论】:
【讨论】:
如果您想保存所有内容,包括整个命名空间和当前正在执行的代码行以随时重新启动,那么没有标准库模块可以做到这一点。
正如另一张海报所说,pickle 模块可以将几乎所有内容保存到一个文件中,然后再次加载它,但是您必须围绕 pickle 模块专门设计您的程序(即保存您的“状态” - 包括变量,等等——在一个班级里)。
【讨论】:
如果您对 OOP 没问题,请考虑为每个类创建一个方法,将序列化版本(使用 pickle)输出到文件。然后添加第二种方法以在实例中加载数据,如果存在腌制文件,则调用加载方法而不是处理方法。 我将这种方法用于 ML,它确实促进了我的工作流程。
【讨论】:
在传统的编程方法中,在某个执行点之后保存变量或对象状态的明显方法是序列化。
所以如果你想在一些已经计算过的繁重状态之后执行程序,我们只需要从反序列化部分开始。
这些步骤主要在数据科学建模中最需要,我们加载一个巨大的 CSV 或其他一些数据并计算它,我们不想在每次运行程序时都重新计算。
http://jupyter.org/ - 无需您手动操作即可自动执行这些序列化/反序列化的工具。
您需要做的就是执行您的 Python 代码的选定部分,比如第 10-15 行,这取决于之前的第 1-9 行。 Jupyter 会为你保存 1-9 的状态。探索教程并尝试一下。
【讨论】: