این کد نحوه کار با ارجاعات ضعیف در پایتون را نشان میدهد. با استفاده از
#weakref | LearnPython
weakref، از حافظه به طور مؤثری استفاده کنید و از نشت حافظه جلوگیری نمایید. این رویکرد به مدیریت بهتر منابع در کدهای بزرگ و پیچیده کمک میکند.#weakref | LearnPython
🔆 ماژول
در زیر یک مثال کاربردی از استفاده از ماژول
🔅 توضیحات:
1. تعریف کلاس MyClass: این کلاس یک متغیر
2.ساخت یک نمونه از کلاس: شی
3.ایجاد ارجاع ضعیف: با استفاده از
4.دسترسی به شی از طریق ارجاع ضعیف: با استفاده از
5.حذف ارجاع قوی: با استفاده از
6.تلاش برای دسترسی پس از حذف: در نهایت، با بررسی اینکه آیا
🔅 خروجی برنامه:
این مثال نشان میدهد که چگونه میتوان از ارجاعهای ضعیف برای مدیریت حافظه و جلوگیری از نگهداری اشیا در حافظه زمانی که دیگر نیازی به آنها نیست، استفاده کرد.
#weakref | LearnPython
weakref در پایتون برای ایجاد ارجاعهای ضعیف (weak references) به اشیا استفاده میشود. ارجاعهای ضعیف به اشیا اجازه میدهند تا توسط garbage collector جمعآوری شوند، حتی اگر هنوز ارجاعهای ضعیفی به آنها وجود داشته باشد. این ماژول در مواقعی مفید است که میخواهید به یک شی اشاره کنید، اما نمیخواهید مانع از جمعآوری آن توسط garbage collector شوید.در زیر یک مثال کاربردی از استفاده از ماژول
weakref آورده شده است:import weakref
class MyClass:
def __init__(self, name):
self.name = name
def __del__(self):
print(f'{self.name} is being deleted')
# ایجاد یک نمونه از کلاس
obj = MyClass('MyObject')
# ایجاد یک ارجاع ضعیف به شی
weak_ref = weakref.ref(obj)
# دسترسی به شی از طریق ارجاع ضعیف
print(f'Object name: {weak_ref().name}')
# حذف ارجاع قوی به شی
del obj
# تلاش برای دسترسی به شی از طریق ارجاع ضعیف بعد از حذف
if weak_ref() is None:
print('The object has been deleted')
else:
print(f'Object name: {weak_ref().name}')
🔅 توضیحات:
1. تعریف کلاس MyClass: این کلاس یک متغیر
name در خود دارد و در زمان حذف شی، یک پیام را چاپ میکند.2.ساخت یک نمونه از کلاس: شی
obj از کلاس MyClass با نام 'MyObject' ساخته میشود.3.ایجاد ارجاع ضعیف: با استفاده از
weakref.ref(obj), یک ارجاع ضعیف به شی obj (که به طور مستقیم به آن دسترسی ندارد) ایجاد میشود.4.دسترسی به شی از طریق ارجاع ضعیف: با استفاده از
weak_ref(), نام شی از طریق ارجاع ضعیف چاپ میشود.5.حذف ارجاع قوی: با استفاده از
del obj, حذف ارجاع قوی به شی انجام شده و منجر به آمادهسازی آن برای حذف از حافظه میشود.6.تلاش برای دسترسی پس از حذف: در نهایت، با بررسی اینکه آیا
weak_ref() مقدار None را برمیگرداند یا خیر، مشخص میشود که آیا شی حذف شده است یا خیر. اگر ارجاع ضعیف متوجه شود که شی حذف شده است، پیام مربوط به آن چاپ میشود.🔅 خروجی برنامه:
Object name: MyObject
MyObject is being deleted
The object has been deleted
این مثال نشان میدهد که چگونه میتوان از ارجاعهای ضعیف برای مدیریت حافظه و جلوگیری از نگهداری اشیا در حافظه زمانی که دیگر نیازی به آنها نیست، استفاده کرد.
#weakref | LearnPython