假设我有一个python程序可以执行以下操作:
do_some_long_data_crunching_computation()
call_some_fiddly_new_crashing_function()
有没有办法"冻结"并在第一次长计算的返回点之后序列化python程序的状态(所有全局变量等),然后重新开发新函数的开发并从这一点重新启动程序执行?
如果您从解释器运行程序,这有点可能,但还有其他方法吗?
答案 0 :(得分:1)
嗯,不。
重点是Python和你的操作系统没有副作用(它实际上甚至没有远程功能,虽然它有一些功能语言的功能),所以要恢复程序的状态并不是真的在这种情况下工作。你基本上必须重新运行程序,完全是你最后一次启动它时的计算机状态。
现在,你要做的是在长时间操作之后,你可以使用pickle
或类似的方法保存对你很重要的变量的状态。
现在,我知道你想避免照顾要存储的内容以及如何恢复它,但这基本上是不洁设计的标志:你应该尽可能地将你的计算状态存储在单一状态对象;序列化和反序列化然后很容易。不要在全局变量中存储计算状态!