سلام دوست عزیز😃👋
به مسابقه «المپیک فناوری: Python/Django» خوش آمدی!
لینکهای مفید برای شرکت در مسابقه:
نوع داوری سوالات مسابقه:
هرگونه ارتباط با سایر شرکتکنندگان و یا استفاده از ابزارهای تولید کد، مثل chatGPT و... در مسابقات کوئرا ممنوع است و بعد از شناسایی از لیست شرکتکنندگان مسابقه حذف میشوید.
در طول مسابقه، میتوانید سؤالات خود را از قسمت «سوال بپرسید» مطرح کنید.
موفق باشید 😉✌
هلیا با مشکل کند بودن اجرای توابعش روبهرو شدهاست و میخواهد نتیجهی اجرای توابع را برای مدتی در حافظه نگه دارد تا هربار که تابع را با همان ورودیهای قبلی اجرا میکند، محاسبات تابع از نو اجرا نشوند. به او کمک کنید یک دکوراتور بنویسد که این کار را برای او انجام دهد.
دکوراتور شما (به نام conditional_cache
) باید مدت زمان نگهداری نتایج، شرط نگهداری نتایج و بیشینهٔ حجم کش را ورودی بگیرد. در صورتی که شرط برقرار نبود، تابع موردنظر نباید اجرا شود. در غیر این صورت، اگر نتایج ذخیرهشده منقضی نشده بودند، مقدار ذخیرهشده برگردانده شود و در غیر اینصورت تابع اجرا شود و مقدار جدید آن برگردانده شود.
همچنین برای جلوگیری از دسترسی همزمان به مقادیر ذخیرهشده و ایجاد Race Condition، باید دسترسی به این مقادیر محدود شود و در هر لحظه تنها یک امکان دسترسی به آن وجود داشته باشد.
پروژهی اولیهی این سؤال را میتوانید از این لینک دانلود کنید.
این سؤال از نوع سؤالات تکفایل است. شما باید تابع conditional_cache
موجود در فایل main.py
را تکمیل و سپس این فایل را ارسال کنید.