說我設置記憶化與Joblib如下(使用該解決方案提供here):選擇性重新記憶化
from tempfile import mkdtemp
cachedir = mkdtemp()
from joblib import Memory
memory = Memory(cachedir=cachedir, verbose=0)
@memory.cache
def run_my_query(my_query)
...
return df
而且說我定義了幾個疑問,query_1
和query_2
的,他們都採取了長時間運行。
我的理解是,與代碼,因爲它是:
的第二通話,無論是查詢,將使用memoized輸出,即:
run_my_query(query_1) run_my_query(query_1) # <- Uses cached output run_my_query(query_2) run_my_query(query_2) # <- Uses cached output
我可以使用
memory.clear()
刪除整個緩存目錄
但是如果我想要重做備忘只有一個查詢(例如, query_2
)而不強制刪除另一個查詢?
似乎['.call'](https://pythonhosted.org/joblib/memory.html#joblib.memory.MemorizedFunc.call)_forces_計算。你可能想檢查它是否更新緩存。 – 2014-09-23 15:04:57
@ behzad.nouri偉大的指針!我希望有這樣的方法。我查找了關鍵字'force',但沒有找到任何東西。 '.call'可能是答案。我會查一下。 – 2014-09-23 15:06:49
@ behzad.nouri看着[代碼](https://github.com/joblib/joblib/blob/master/joblib/memory.py#L665-L682),它似乎調用'persist_output',所以我認爲它將做的伎倆! – 2014-09-23 15:10:10