我正在尝试制作一个简单的中间编译功能:
lst = [lambda x: calculate_urls(),
lambda x: join_urls_with_ids(x, args[0]),
lambda x: bucket_urls(x)]
intermediate.execute(lst)
intermediate.execute
将运行列表中的每个项目。第一个函数的输出是第二个函数的输入,以此类推。lambda 用于使每个函数只接受一个参数。(第一个输入值是None
,所以在这里它被有效地忽略了。)
在每个中间步骤,输出被腌制并保存(目前只是到/tmp
)。如果某个函数已经存在一些中间输出,则跳过该函数的执行并进入下一步。
我正在寻找一种方法来检测函数代码的变化,我认为散列代码将是一种快速的方法。我希望它检测是否有人更改了函数的实现,以便它再次执行该函数并忽略缓存的值。
我发现了func_code
,这是可散列的 AFAIK。但是,它仅适用于该特定函数,这意味着哈希仅在上述代码中的 lambdas 更改时才更改,而不是 lambdas 调用的函数。我正在寻找的理论上可能吗?有合理的中间立场吗?