آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش ارجاع های ضعیف (weak references) در برنامه نویسی پایتون

دوره های مرتبط با این مقاله
دوره آموزش پایتون

آموزش ارجاع های ضعیف (weak references) در برنامه نویسی پایتون


پایتون دارای سیستم مدیریت خودکار حافظه است (شمارش ارجاع برای اکثر اشیا و جمع آوری زباله(garbage collection) برای حذف چرخه ها). پس از حذف آخرین ارجاع به حافظه، حافظه سریعا آزاد می شود.

این راهکار برای اکثر برنامه های کاربردی به خوبی کار می کند، اما گاهی نیاز است تا اشیا را تنها تا زمانی که توسط چیز دیگری در حال استفاده هستند، دنبال کنیم. متاسفانه، فقط دنبال کردن آنها، یک ارجاعی می سازد که آنها را دائمی می کند.

ماژول weakref ابزارهایی برای دنبال کردن اشیا بدون ایجاد یک ارجاع را فراهم می کند. زمانی که دیگر به شی احتیاج نداریم، شی به صورت خودکار از جدول weakref حذف می شود و یک باز فراخوانی(callback) برای اشیای weakref فعال می شود. برنامه های کاربردی معمول، شامل اشیای ذخیره سازی (caching) هستند که ساخت آنها گران است.


    >>> import weakref, gc
    >>> class A:
    ...     def __init__(self, value):
    ...         self.value = value
    ...     def __repr__(self):
    ...         return str(self.value)
    ...
    >>> a = A(10)                   # create a reference
    >>> d = weakref.WeakValueDictionary()
    >>> d['primary'] = a            # does not create a reference
    >>> d['primary']                # fetch the object if it is still alive
    10
    >>> del a                       # remove the one reference
    >>> gc.collect()                # run garbage collection right away
    0
    >>> d['primary']                # entry was automatically removed
    Traceback (most recent call last):
      File "", line 1, in 
        d['primary']                # entry was automatically removed
      File "C:/python38/lib/weakref.py", line 46, in __getitem__
        o = self.data[key]()
    KeyError: 'primary'

  • 53
  •    48
  • تاریخ ارسال :   1399/03/22

دانلود PDF دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .