単純な中間コンパイル関数を作成しようとしています。
lst = [lambda x: calculate_urls(),
lambda x: join_urls_with_ids(x, args[0]),
lambda x: bucket_urls(x)]
intermediate.execute(lst)
intermediate.execute
リスト内の各アイテムを実行します。最初の関数の出力は2番目の関数の入力であり、以下同様です。ラムダは、各関数が1つの引数のみを取るようにするために使用されます。(最初の入力値はNone
であるため、ここでは事実上無視されます。)
各中間ステップで、出力がピクルス化されて保存されます(現在は/tmp
)。関数の中間出力がすでに存在する場合、関数の実行はスキップされ、次のステップに進みます。
関数コードの変更を検出する方法を探しています。コードをハッシュするのが簡単な方法だと思いました。誰かが関数の実装を変更したかどうかを検出して、関数を再度実行し、キャッシュされた値を無視するようにします。
func_code
ハッシュ可能なAFAIKであるについて知りました。ただし、これはその特定の関数に対してのみ機能します。つまり、ハッシュは、ラムダによって呼び出される関数ではなく、上記のコードのラムダが変更された場合にのみ変更されます。私が探しているものは理論的に可能ですか?合理的な中間点はありますか?