Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पाइथन में कचरा संग्रहण कैसे काम करता है?


पायथन स्मृति स्थान को खाली करने के लिए अवांछित वस्तुओं (अंतर्निहित प्रकार या वर्ग उदाहरण) को स्वचालित रूप से हटा देता है। वह प्रक्रिया जिसके द्वारा पायथन समय-समय पर स्मृति के उन ब्लॉकों को मुक्त और पुनः प्राप्त करता है जो अब उपयोग में नहीं हैं, कचरा संग्रह कहलाते हैं।

पायथन का कचरा संग्रहकर्ता प्रोग्राम निष्पादन के दौरान चलता है और जब किसी ऑब्जेक्ट की संदर्भ संख्या शून्य तक पहुंच जाती है तो ट्रिगर हो जाता है। किसी ऑब्जेक्ट की संदर्भ संख्या में परिवर्तन होने पर उसे इंगित करने वाले उपनामों की संख्या में परिवर्तन होता है।

किसी वस्तु की संदर्भ संख्या तब बढ़ जाती है जब उसे एक नया नाम दिया जाता है या एक कंटेनर (सूची, टपल, या शब्दकोश) में रखा जाता है। ऑब्जेक्ट की संदर्भ संख्या घट जाती है जब इसे डेल से हटा दिया जाता है, इसका संदर्भ पुन:असाइन किया जाता है, या इसका संदर्भ दायरे से बाहर हो जाता है। जब किसी वस्तु की संदर्भ संख्या शून्य तक पहुंच जाती है, तो पायथन उसे स्वचालित रूप से एकत्र करता है।

a = 40      # Create object <40>
b = a       # Increase ref. count  of <40>
c = [b]     # Increase ref. count  of <40>
del a       # Decrease ref. count  of <40>
b = 100     # Decrease ref. count  of <40>
c[0] = -1   # Decrease ref. count  of <40>
. की गिनती

आप आमतौर पर ध्यान नहीं देंगे जब कचरा संग्रहकर्ता एक अनाथ उदाहरण को नष्ट कर देता है और उसके स्थान को पुनः प्राप्त करता है। लेकिन एक वर्ग विशेष विधि __del__() को लागू कर सकता है, जिसे डिस्ट्रक्टर कहा जाता है, जिसे तब लागू किया जाता है जब इंस्टेंस नष्ट होने वाला होता है। इस पद्धति का उपयोग किसी उदाहरण द्वारा उपयोग किए गए किसी भी गैर-स्मृति संसाधनों को साफ करने के लिए किया जा सकता है।

उदाहरण

यह __del__() विनाशक उस उदाहरण के वर्ग नाम को प्रिंट करता है जो नष्ट होने वाला है -

#!/usr/bin/python
class Point:
   def __init__( self, x=0, y=0):
      self.x = x       self.y = y    def __del__(self):
      class_name = self.__class__.__name__       print class_name, "destroyed"
 pt1 = Point()
pt2 = pt1 pt3 = pt1
print id(pt1), id(pt2), id(pt3) # prints the ids of the obejcts
del pt1
del pt2
del pt3

आउटपुट

जब उपरोक्त कोड निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

3083401324 3083401324 3083401324
Point destroyed

  1. पाइथन में [\d+] रेगुलर एक्सप्रेशन कैसे काम करता है?

    निम्न कोड दिखाता है कि रेगुलर एक्सप्रेशन [\d+] दिए गए स्ट्रिंग पर क्या करता है [\d+] रेगुलर एक्सप्रेशन एक अंक (0-9) या + वर्ण को दर्शाता है उदाहरण import re result = re.findall(r'[\d+]', 'Taran123tula+456') print result आउटपुट ['1', '2', '3', '+', 

  1. पाइथन फाइलों में अंडरस्कोर _ कैसे काम करता है?

    पायथन में अंडरस्कोर (_) खास है। पायथन में अंडरस्कोर का उपयोग करने के 5 मामले हैं। 1. दुभाषिया में अंतिम अभिव्यक्ति के मूल्य को संग्रहीत करने के लिए। पायथन दुभाषिया अंतिम अभिव्यक्ति मान को _ नामक विशेष चर में संग्रहीत करता है। उदाहरण के लिए >>> 12 + 10 22 >>> _ 22 2. विशिष्ट मूल्

  1. mkdir -p पायथन में कैसे काम करता है?

    mkdir -p का उपयोग माता-पिता के मौजूद होने पर भी पुनरावर्ती निर्देशिका बनाने की अनुमति देने के लिए किया जाता है। एक निर्देशिका को पुनरावर्ती रूप से बनाने के लिए, वह पथ प्रदान करें जिसे आप os.makedirs(path) पर बनाना चाहते हैं। पुनरावर्ती रूप से एक निर्देशिका बनाने के लिए, आपको मौजूदा फ़ोल्डरों को अनुम