কম্পিউটার টিউটোরিয়াল

পাইথনে অবজেক্ট ধ্বংস (Garbage Collection)

পাইথন অপ্রয়োজনীয় অবজেক্টগুলো (বিল্ট-ইন টাইপ বা ক্লাস ইনস্ট্যান্স) স্বয়ংক্রিয়ভাবে ডিলিট করে মেমরি স্পেস ফ্রি করতে। পাইথন সময়-सময়ে যে প্রক্রিয়ায় ব্যবহৃত ন হওয়া মেমরি ব্লকগুলো রিক্লেইম করে, তাকে গারবেজ কলেকশন বলা হয়।

পাইথনের গারবেজ কলেক্টর প্রোগ্রাম এক্সিকিউশনের সময় চলে এবং এটি ট্রিগার হয় যখন একটি অবজেক্টের রেফারেন্স কাউন্ট শূন্যে পৌঁছায়। একটি অবজেক্টের রেফারেন্স কাউন্ট পরিবর্তন হয় সেই ओर নির্দেশকারী অ্যালায়াসের সংখ্যা পরিবর্তন হলে।

অবজেক্টের রেফারেন্স কাউন্ট বাড়ে যখন এটিকে নতুন নাম দেওয়া হয় বা কন্টেইনার (লিস্ট, টাপল, ডিকশনারি) এ রাখা হয়। রেফারেন্স কাউন্ট কমে যখন del দিয়ে ডিলিট করা হয়, এর রেফারেন্স রি-অ্যাসাইন করা হয়, বা এর রেফারেন্স স্কোপের বাইরে চলে যায়। রেফারেন্স কাউন্ট শূনย์ হলে পাইথন স্বয়ংক্রিয়ভাবে সেটি কালেক্ট করে।

a = 40      # অবজেক্ট <40> তৈরি
b = a       # <40>-এর রেফ. কাউন্ট বাড়ে
c = [b]     # <40>-এর রেফ. কাউন্ট বাড়ে
del a       # <40>-এর রেফ. কাউন্ট কমে
b = 100     # <40>-এর রেফ. কাউন্ট কমে
c[0] = -1   # <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)
del pt1
del pt2
del pt3

আউটপুট

3083401324 3083401324 3083401324
Point destroyed

নোট - আদর্শভাবে আপনার ক্লাসগুলো আলাদা ফাইলে সংজ্ঞায়িত করুন, তারপর মেইন প্রোগ্রাম ফাইলে import করে ব্যবহার করুন।

  1. অ্যারে-এ ইনভারশন কাউন্ট করার পাইথন প্রোগ্রাম

  2. পাইথনে ক্লাস বা স্ট্যাটিক ভেরিয়েবল

  3. পাইথনে ফাইল অবজেক্ট: ফাইল পড়া, লিখা এবং ম্যানেজমেন্টের সম্পূর্ণ গাইড

  4. পাইথনে গার্বেজ কালেকশন কীভাবে কাজ করে?