eitaa logo
آموزش پایتون
63 دنبال‌کننده
244 عکس
106 ویدیو
52 فایل
ارتباط: https://eitaa.com/joinchat/956171922Cb501d5a32f لینک همین کانال: @LearnPythonIcy لینک کانال تلگرام: https://t.me/learnpythonicy
مشاهده در ایتا
دانلود
این کد نحوه کار با ارجاعات ضعیف در پایتون را نشان می‌دهد. با استفاده از 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 این مثال نشان می‌دهد که چگونه می‌توان از ارجاع‌های ضعیف برای مدیریت حافظه و جلوگیری از نگه‌داری اشیا در حافظه زمانی که دیگر نیازی به آن‌ها نیست، استفاده کرد. | LearnPython