یکی از ابزارهای جالب و کاربردی در پایتون، دکوریتور lru_cache هست که به ما کمک میکنه عملکرد برنامههامون رو با ذخیرهسازی نتایج محاسبات تکراری بهبود بدیم.
این دکوریتور بهطور خودکار نتایج تابع رو برای ورودیهای قبلی ذخیره میکنه و در دفعات بعدی، بهجای محاسبه دوباره، نتیجه کششده رو برمیگردونه.
فرض کن تابعی داریم که عدد nام دنباله فیبوناچی رو محاسبه میکنه:
from functools import lru_cache
@lru_cache(maxsize=None)
# میتونیم محدودیت کش رو با maxsize مشخص کنیم
def fibonacci(n):
if n < 2:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
print(fibonacci(30)) # محاسبه و کش شدن نتایج
print(fibonacci(30)) # این بار خیلی سریع از کش برمیگرده
دفعه اول که fibonacci(30) اجرا میشه، محاسبات بهصورت کامل انجام میشن.
اما دفعه دوم، نتیجه بدون محاسبه، مستقیم از کش گرفته میشه. خیلی سریعتر!
@TryCodeBox
