कमजोर मॉड्यूल के लिए आधिकारिक पायथन दस्तावेज़ के अनुसार "कमजोर संदर्भों के लिए प्राथमिक उपयोग कैश या मैपिंग को बड़ी वस्तुओं को पकड़ना है ..."। इसलिए, मैंने एक लंबे समय तक चलने वाले फ़ंक्शन के लिए कैशिंग तंत्र को लागू करने के लिए WeakValueDictionary का उपयोग किया। हालांकि, जैसा कि यह निकला, कैश में मूल्य तब तक नहीं रहे जब तक वे वास्तव में फिर से उपयोग नहीं किए जाते, लेकिन लगभग हर बार पुन: संकलित करने की आवश्यकता होती है। चूंकि WeakValueDictionary में संग्रहीत मानों तक पहुंच के बीच कोई मजबूत संदर्भ नहीं थे, इसलिए जीसी ने उनसे छुटकारा पा लिया (भले ही स्मृति के साथ बिल्कुल कोई समस्या नहीं थी)।कैश के लिए WeakValueDictionary का उपयोग करते समय जीसी के साथ समस्याएं
अब, कैश को लागू करने के लिए मुझे कमजोर संदर्भ सामग्री का उपयोग कैसे करना चाहिए? अगर मैं जीसी को अपने कमजोर संदर्भों को हटाने से स्पष्ट रूप से मजबूत संदर्भ रखता हूं, तो पहले स्थान पर वीकवेल्यू डिक्शनरी का उपयोग करने का कोई मतलब नहीं होगा। संभवतः जीसी के लिए कुछ विकल्प होना चाहिए जो इसे बताता है: स्मृति को समाप्त होने पर केवल कुछ संदर्भों और कमजोर संदर्भ वाले सभी चीज़ों को हटाएं (या कुछ थ्रेसहोल्ड पार हो गया है)। क्या ऐसा कुछ है? या इस तरह के कैश के लिए एक बेहतर रणनीति है?