python中可加载的程序检查点(可序列化的延续/程序图像)

时间:2016-02-07 10:58:32

标签: python debugging serialization continuations

假设我有一个python程序可以执行以下操作:

do_some_long_data_crunching_computation()
call_some_fiddly_new_crashing_function()

有没有办法"冻结"并在第一次长计算的返回点之后序列化python程序的状态(所有全局变量等),然后重新开发新函数的开发并从这一点重新启动程序执行?

如果您从解释器运行程序,这有点可能,但还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

嗯,不。

重点是Python和你的操作系统没有副作用(它实际上甚至没有远程功能,虽然它有一些功能语言的功能),所以要恢复程序的状态并不是真的在这种情况下工作。你基本上必须重新运行程序,完全是你最后一次启动它时的计算机状态。

现在,你要做的是在长时间操作之后,你可以使用pickle或类似的方法保存对你很重要的变量的状态。

现在,我知道你想避免照顾要存储的内容以及如何恢复它,但这基本上是不洁设计的标志:你应该尽可能地将你的计算状态存储在单一状态对象;序列化和反序列化然后很容易。不要在全局变量中存储计算状态!