如何将Python函数的结果缓存到磁盘,并在以后的会话中使用缓存的值,当且仅当函数代码及其所有依赖项自上次运行以来没有改变时?
换句话说,我想创建一个Python缓存系统,自动监视更改的代码。
我正在尝试构建一个自动记忆Python计算结果的工具。我希望memoization在Python会话之间保持不变(即稍后可以在另一个Python实例中重用,最好是在具有相同Python版本的另一台机器上)。
假设我有一个带有一些函数mymodule
的Python模块mymodule.func()
。假设我已经解决了序列化/识别函数参数的问题,所以我们可以假设mymodule.func()
如果简化了任何事情就不带参数。
还假设我保证函数mymodule.func()
及其所有依赖项都是确定性的,所以mymodule.func() == mymodule.func()
。
我想今天运行函数mymodule.func()
并保存其结果(以及解决此任务所需的任何其他信息)。如果我以后想要相同的结果,我想加载缓存的结果,而不是再次运行mymodule.func()
,但仅,如果mymodule.func()
中的代码及其依赖项没有变化。
为简化起见,我们可以假设该函数总是在一个刚刚启动的Python解释器中运行,其中包含如下最小的脚本:
import some_save_function
import mymodule
result = mymodule.func()
some_save_function(result, 'filename')
另外,请注意我不想过于保守。在第一次运行时使用modulefinder模块查找所涉及的所有模块可能并不太难,如果任何模块完全没有更改,则不使用缓存。但是这违背了我的目的,因为在我的用例中,导入模块中的某些不相关的函数很可能已经改变。
mymodule.func()
调用)。感谢任何输入!