कहते हैं कि मैं सेटअप Memoization (का उपयोग कर समाधान here प्रदान की गई):चयनात्मक DataFrames की पुन: Memoization
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
के एक जोड़े को परिभाषित, उन दोनों एक ले चलाने के लिए लंबा समय।
मैं समझता हूँ कि, के रूप में यह है कोड के साथ:
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
मैं इस्तेमाल कर सकते हैं:
दूसरा या तो क्वेरी के साथ कॉल, memoized उत्पादन, यानी प्रयोग करेंगे
memory.clear()
पूरे कैश निर्देशिका को हटाने के लिए
लेकिन अगर मैं री-डूके लिए ज्ञापन (उदा। query_2
) अन्य क्वेरी पर एक डिलीट मजबूर किए बिना?
गणना _forces_ लगता है कि [ '.call'] (https://pythonhosted.org/joblib/memory.html#joblib.memory.MemorizedFunc.call)। आप यह जांचना चाहेंगे कि यह कैश को भी अपडेट करता है या नहीं। –
@ behzad.nouri महान सूचक! मैं इस तरह की एक विधि की उम्मीद कर रहा था। मैंने कीवर्ड 'फोर्स' की तलाश की लेकिन कुछ भी नहीं मिला। '.call' जवाब हो सकता है। मैं इसकी जांच करूंगा। –
@ behzad.nouri [कोड] (https://github.com/joblib/joblib/blob/master/joblib/memory.py#L665-L682) को देखकर, ऐसा लगता है कि 'persist_output' को कॉल करें, इसलिए मुझे लगता है कि यह चाल चलेंगे! –