我有一個具有確定性結果的python函數。這需要很長的時間來運行,併產生大量輸出:當函數被修改時,散列python函數以重新生成輸出
def time_consuming_function():
# lots_of_computing_time to come up with the_result
return the_result
我修改time_consuming_function
不時,但我想,以避免它再次運行,而它的不變。 [time_consuming_function
只依賴於爲了這裏考慮的目的而不可變的函數;即它可能具有來自Python庫的函數,但不是來自我會改變的其他代碼段。]向我暗示的解決方案是緩存輸出並緩存函數的一些「散列」。如果哈希值發生變化,函數將被修改,我們必須重新生成輸出。
這是可能或荒謬的?
更新:根據答案,它看起來像我想要做的是「memoize的」 time_consuming_function
,除了代替(或補充)的參數傳遞到一個不變的功能,我想說明一種本身會改變的功能。
+1有趣的問題。 – zdav 2010-04-26 20:46:00
你如何修改該方法?你想在程序運行時保持哈希值,還是在一次運行中,但是在一些模塊重新加載? – doublep 2010-04-26 20:49:13
我會在腳本文件中的方法;我可能會隨時修改它。應用程序是這個函數會產生「問題數據」,用於在某些仿真代碼中運行。我會不時改變這個問題。 – 2010-04-26 21:23:00