एसओ में पाइथन कचरा संग्रह पर कई धागे हैं, और लगभग पांच पढ़ने के बाद, लाइन पर कुछ दस्तावेज़ पढ़ने के बाद भी, मुझे अभी भी यकीन नहीं है कि कैसे कचरा संग्रह काम करता है और मुझे उन वस्तुओं का प्रबंधन कैसे करना चाहिए जिन्हें मैं उपयोग नहीं कर रहा हूं। असल में मैंने कहीं पढ़ा है कि कचरा इकट्ठा करने के बारे में कुछ भी नहीं करना चाहिए, अन्य लोगों को बताएं कि del
ऑब्जेक्ट्स चाहिए, जबकि अन्य ने फिर से ऑब्जेक्ट को डी-रेफरेंसिंग करने की व्याख्या की है ताकि पाइथन इसे कचरा के रूप में इकट्ठा कर सके।ऑब्जेक्ट को पाइथन कचरा संग्रह में कैसे पहुंचाया जाए?
तो, डुप्लिकेट बनाने के जोखिम पर, मैं फिर से प्रश्न पूछूंगा, लेकिन अलग-अलग, अधिक व्यापक और स्पष्ट जानकारी प्राप्त करने की उम्मीद कर रहा हूं।
मेरे मामले में मैं लोगों का प्रतिनिधित्व करने वाली वस्तुओं के साथ एक छोटा सिमुलेशन बनाना चाहता हूं। Person()
कक्षा के कई उदाहरण बनाए जाएंगे। यह कुछ समय तक अस्तित्व में होना चाहिए जब तक कि यह लगभग "मर जाता है" जबकि अन्य उदाहरण बनाए जाएंगे।
अब मैं यह Person()
उदाहरण "मर" कैसे बना सकता हूं (मानते हैं कि इनमें से कई उदाहरण बनाए जाएंगे और मैं नहीं चाहता कि ये उदाहरण भूत की तरह लटक जाएं)?
ऐसे कई तरीके है मैं एक वस्तु को संदर्भित कर सकते हैं:
john = Person('john')
या
people = []
people.append(Person('john'))
या
people = {}
people['john'] = Person('john')
सबसे अच्छा तरीका क्या मेरा कार्यक्रम स्वच्छ, मुक्त कराने के संसाधनों को रखने के लिए है बेहतर? और फिर मेरे ऑब्जेक्ट को संदर्भित करने का सबसे अच्छा तरीका क्या है ताकि मैं ऑब्जेक्ट को हटाने पर नियंत्रण कर सकूं?
जीसी मॉड्यूल की जांच करें: http://docs.python.org/library/gc.html – rubik
संक्षिप्त उत्तर है: आप नहीं करते हैं। जब आप इसका उपयोग नहीं करते हैं (इसका संदर्भ है) यह इसे स्वयं लेता है। या शायद बाद में या कभी नहीं। जीसी निर्धारिती नहीं है, केवल गारंटी यह है कि यदि कचरा पुन: उपयोग किया जाता है तो आप स्मृति से बाहर नहीं होंगे (रूढ़िवादी जीसी के साथ कुछ परिस्थितियों को छोड़कर, लेकिन न तो पाइथन और न ही किसी अन्य स्मृति-प्रबंधित भाषा में इनका उपयोग करना है; केवल पॉइंटर अंकगणित के साथ भाषाएं या पॉइंटर्स को पूर्णांक आदि से बचने के लिए एक तरीका उन लोगों की आवश्यकता है)। और जब तक आप इसे समझ नहीं लेते और आपको आमतौर पर चिंता करने की आवश्यकता क्यों नहीं होती है, तो आपको इसे छोड़ देना चाहिए। – delnan
यह प्रश्न रूबी, स्मॉलटाक, जावा, सी # या वीबी 6 और शायद कई अन्य लोगों पर भी लागू हो सकता है। – quamrana