保存程序状态以便可以恢复执行
我有时候会写一些Python程序,这些程序运行起来比较慢。我希望能保存程序的状态,以便之后可以继续运行。有没有人有什么好办法,可以每隔一段时间保存一次状态,或者在程序退出的时候保存状态呢?
4 个回答
1
如果你对面向对象编程(OOP)有了解,可以考虑为每个类创建一个方法,用来把对象的内容保存到文件里(可以用一种叫做pickle的方式)。然后再添加一个方法,用来从文件中加载这些数据。如果发现有这个保存的文件,就调用加载的方法,而不是重新处理数据。
我在做机器学习的时候用这种方法,真的能加快我的工作流程。
5
如果你想保存所有东西,包括整个命名空间和当前正在执行的代码行,以便随时可以重新启动,那就没有一个标准的库模块可以做到这一点。
正如其他人所说,pickle模块可以把几乎所有东西保存到一个文件里,然后再加载回来,但你需要特别设计你的程序来适应这个pickle模块(也就是说,要把你的“状态”——包括变量等等——保存在一个类里)。
12
把你所有的“状态”数据放在一个地方,然后使用一个叫做 pickle 的工具。
pickle模块提供了一种基本但强大的方法,用来把Python对象的结构进行“序列化”和“反序列化”。“序列化”就是把Python对象的层次结构转换成一串字节流,而“反序列化”则是把这串字节流再转换回对象的层次结构。序列化(和反序列化)也可以叫做“打包”、“传输”,或者“扁平化”,不过为了避免混淆,这里我们就用“打包”和“解包”这两个词。