TGViewer
PyCoders (پایتون) PyCoders (پایتون) @python_rd · 4.1K subscribers
Post #2145 510
🔆 افزایش ۱۰ برابری سرعت برنامه‌های پایتون فقط با ۱ خط کد!

🔹 تا حالا شده توی پایتون یک تابع محاسباتی سنگین (مثل فاکتوریل، فیبوناچی یا پردازش داده) داشته باشی که با ورودی‌های تکراری مدام اجرا بشه و سی‌پی‌یو رو درگیر کنه؟

🔹پایتون برای این کار یک ابزار فوق‌العاده توی کتابخونه داخلی functools داره به اسم @cache (یا @lru_cache).

🔹 روش عادی (اجرای مجدد محاسبات تکراری):
def fibonacci(n):
if n < 2:
return n
return fibonacci(n - 1) + fibonacci(n - 2)

# برای n = 35 چند ثانیه طول می‌کشه و میلیون‌ها محاسبه تکراری انجام میده!
print(fibonacci(35))


🔹روش هوشمندانه با Cache (ذخیره نتایج قبلی در حافظه):
from functools import cache

@cache
def fibonacci(n):
if n < 2:
return n
return fibonacci(n - 1) + fibonacci(n - 2)

# اجرای همون کد در کسری از میلی‌ثانیه (O(n) به جای O(2^n))!
print(fibonacci(35))

🔹 چطور کار می‌کنه؟
وقتی دکوراتور @cache رو بالای تابع می‌ذاری، پایتون ورودی‌ها و خروجی‌های تابع رو یادش می‌مونه. دفعه بعد که همون ورودی داده بشه، به جای محاسبه مجدد، بلافاصله جواب رو از رم برمی‌گردونه!

🐍 @python_rd
  • ❤ 4
  • 🔥 1
More from @python_rd
  1. Oct 15, 2026🔆 آیا enumerate() بهتر از index-based loop است؟ 🔹 خیلی‌ها هنوز این شکلی می‌نویسند: items…
  2. Oct 15, 2026🔆 یک تله عجیب در پایتون: bool در واقع زیرکلاس int است 🔹 خیلی‌ها می‌دانند True == 1 و Fal…
  3. Oct 13, 2026کوییز پایتون 🔆 خروجی اجرای کد زیر چیست؟ t = (1, 2, [3, 4]) try: t[2] += [5] except TypeEr…
  4. Oct 13, 2026🔆 راز مکانیزم پیاده‌سازی و تغییر جهت NaN در الگوریتم مرتب‌سازی پایتون (Timsort) 🔹 باگ ری…
  5. Oct 13, 2026🔆 حذف تاریخی GIL از پایتون (Free-threaded Python) 🔹 یک رویداد تاریخی: حذف قفل مفسر (GIL)…
  6. Oct 11, 2026🔆 مدیریت تمیز منابع با Context Managerهای سفارشی (contextlib) 🔹 ساخت Context Managerها م…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →