هلیا با مشکل کند بودن اجرای توابعش روبهرو شدهاست و میخواهد نتیجهی اجرای توابع را برای مدتی در حافظه نگه دارد تا هربار که تابع را با همان ورودیهای قبلی اجرا میکند، محاسبات تابع از نو اجرا نشوند. به او کمک کنید یک دکوراتور بنویسد که این کار را برای او انجام دهد.
دکوراتور شما (به نام conditional_cache
) باید مدت زمان نگهداری نتایج، شرط نگهداری نتایج و بیشینهٔ حجم کش را ورودی بگیرد. در صورتی که شرط برقرار نبود، تابع موردنظر نباید اجرا شود. در غیر این صورت، اگر نتایج ذخیرهشده منقضی نشده بودند، مقدار ذخیرهشده برگردانده شود و در غیر اینصورت تابع اجرا شود و مقدار جدید آن برگردانده شود.
همچنین برای جلوگیری از دسترسی همزمان به مقادیر ذخیرهشده و ایجاد Race Condition، باید دسترسی به این مقادیر محدود شود و در هر لحظه تنها یک امکان دسترسی به آن وجود داشته باشد.
نمونه
اجرا
خروجی
پروژهی اولیه
پروژهی اولیهی این سؤال را میتوانید از این لینک دانلود کنید.
نحوهی ارسال
این سؤال از نوع سؤالات تکفایل است. شما باید تابع conditional_cache
موجود در فایل main.py
را تکمیل و سپس این فایل را ارسال کنید.
ارسال پاسخ برای این سؤال