پایتون مدیریت حافظه خودکار دارد (شمارش ارجاع برای بیشتر اشیاء و جمعآوری زباله برای حذف چرخهها). حافظه اندکی پس از حذف آخرین ارجاع به آن آزاد میشود.
این رویکرد برای بیشتر برنامهها خوب کار میکند اما گاهی نیاز به ردیابی اشیاء فقط تا زمانی که توسط چیز دیگری استفاده میشوند وجود دارد. متأسفانه، فقط ردیابی آنها ایجاد ارجاعی میکند که آنها را دائمی میکند. ماژول weakref ابزارهایی برای ردیابی اشیاء بدون ایجاد ارجاع فراهم میکند. وقتی دیگر به شیء نیازی نباشد، به طور خودکار از جدول weakref حذف شده و یک callback برای اشیاء weakref فعال میشود. کاربردهای معمول شامل کش کردن اشیایی است که ایجاد آنها پرهزینه است:
>>> import weakref, gc >>> class A: ... def __init__(self, value): ... self.value = value ... def __repr__(self): ... return str(self.value) >>> a = A(10) >>> d = weakref.WeakValueDictionary() >>> d['primary'] = a >>> d['primary'] 10 >>> del a >>> gc.collect() 0 >>> d['primary'] Traceback (most recent call last): File "", line 1, in d['primary'] File "...", line 46, in __getitem__ o = self.data[key]() KeyError: 'primary'
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://docs.python.org/3/tutorial