可以使用任何pickle模块对Python方法对象进行序列化吗?
我有一个运行时间很长的脚本,这个脚本执行的操作可以分解成一些独立的、但顺序很重要的函数调用。此外,这里采用的是一种叫做“广度优先遍历”的方法来处理一个图形结构,而在崩溃后重新开始深度遍历可不是个好主意。
所以,我的想法是这样的:在脚本运行的时候,保持一个函数和参数的配对列表。这个列表就像是进行深度优先搜索时的“开放列表”。这些数据很容易获取,所以我不需要担心会丢失它们。
如果因为网络问题或其他错误导致崩溃,这个函数参数的配对列表就足够让我恢复操作。
那么,我可以存储这些函数吗?我的直觉告诉我不行,但在我做出判断之前,我想听听别人的建议。
2 个回答
0
如果说参数才是最重要的,那为什么不直接把这些参数存起来呢?可以直接把它们存成一个简单的元组。
2
你可以把普通的函数进行“腌制”(也就是保存成文件)。Python会记录下函数的名字和它所在的模块,然后用这些信息来重新加载这个函数。如果你想对方法(也就是类里面的函数)做同样的事情,那就稍微复杂一些。你需要把这些对象拆分成不同的部分,然后分别进行“腌制”。