بايثون العرب
10.5K subscribers
866 photos
183 videos
768 links
Download Telegram
⚡️ تسريع الدوال باستخدام functools.lru_cache في بايثون

هل تعاني من بطء بعض الدوال في برنامجك؟ استخدم `lru_cache` من مكتبة `functools` لتخزين نتائج استدعاءات الدوال المتكررة وتسريع الأداء بشكل ملحوظ.

from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(30))
print(fibonacci(30)) # This call will be much faster due to caching


المُزخرف `@lru_cache(maxsize=None)` يقوم بتخزين نتائج استدعاء الدالة `fibonacci` بناءً على وسائطها. عند استدعاء الدالة مرة أخرى بنفس الوسائط، يتم إرجاع النتيجة المخزنة بدلاً من إعادة حسابها، مما يحسن الأداء بشكل كبير للدوال التي تُستدعى بنفس المدخلات عدة مرات.

['#بايثون', '#برمجة', '#functools', '#lru_cache', '#تحسين_الأداء', '#Python', '#Programming', '#Performance']
🚀 تحسين أداء Python: استخدام `@lru_cache` لتسريع الدوال! 🚀

هل تواجه بطئًا في دوالك التي تعتمد على المدخلات المتكررة؟ إليك طريقة سحرية لتسريعها باستخدام التخزين المؤقت!

from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(30))
print(fibonacci(30)) # هذه المرة ستكون أسرع بكثير!


المُزخرف `@lru_cache` من وحدة `functools` يقوم بتخزين نتائج استدعاءات الدالة. عندما يتم استدعاء الدالة بنفس المدخلات مرة أخرى، بدلاً من إعادة الحساب، يتم إرجاع النتيجة المخزنة مؤقتًا، مما يحسن الأداء بشكل كبير، خاصة للدوال العودية أو المكلفة.

['#Python', '#برمجة', '#تطوير', '#تسريع_الكود', '#مكتبات_Python', '#lru_cache', '#Optimization']
🚀 تحسين سرعة الدوال في بايثون باستخدام `lru_cache`

هل تعاني من بطء بعض الدوال التي تستدعيها مراراً وتكراراً بنفس المدخلات؟ دعنا نكتشف كيف يمكن لـ `lru_cache` تسريعها!

from functools import lru_cache
import time

@lru_cache(maxsize=None)
def slow_function(n):
"""دالة بطيئة تحاكي عملية مكلفة."""
time.sleep(1) # محاكاة عملية تستغرق وقتاً
return n * 2

# الاستدعاء الأول (سيستغرق وقتاً)
start_time = time.time()
result1 = slow_function(5)
end_time = time.time()
print(f"الاستدعاء الأول: {result1}, الوقت المستغرق: {end_time - start_time:.2f} ثانية")

# الاستدعاء الثاني بنفس المدخلات (سيكون سريعاً جداً)
start_time = time.time()
result2 = slow_function(5)
end_time = time.time()
print(f"الاستدعاء الثاني: {result2}, الوقت المستغرق: {end_time - start_time:.2f} ثانية")

# استدعاء بمدخلات مختلفة (سيستغرق وقتاً مجدداً)
start_time = time.time()
result3 = slow_function(10)
end_time = time.time()
print(f"الاستدعاء الثالث: {result3}, الوقت المستغرق: {end_time - start_time:.2f} ثانية")


الديكور `@lru_cache(maxsize=None)` يقوم بتخزين نتائج استدعاءات الدالة. عندما تُستدعى الدالة مرة أخرى بنفس المدخلات، يتم إرجاع النتيجة المخزنة مباشرة بدلاً من إعادة حسابها، مما يؤدي إلى تسريع كبير في الأداء، خاصة للدوال التي تتطلب عمليات حسابية معقدة أو مكلفة.

['#بايثون', '#برمجة', '#تحسين_الأداء', '#lru_cache', '#PythonTips', '#Coding']
💡 تحسين سرعة الدوال في بايثون باستخدام @lru_cache ✨

هل تعاني من بطء بعض الدوال في بايثون؟ تعرف على طريقة سحرية لتسريعها باستخدام التخزين المؤقت للنتائج!

from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(30))
print(fibonacci(35))


المُزخرف `@lru_cache` يقوم بتخزين نتائج استدعاءات الدالة. إذا تم استدعاء الدالة بنفس المعاملات مرة أخرى، يتم إرجاع النتيجة المخزنة بدلاً من إعادة حسابها، مما يسرع الأداء بشكل كبير، خاصة للدوال العودية أو التي تستغرق وقتاً طويلاً.

['#بايثون', '#برمجة', '#تطوير', '#Python', '#Coding', '#Optimization', '#lru_cache']
🚀 تسريع دوال Python باستخدام `@lru_cache`

هل تعاني من بطء بعض الدوال في بايثون؟ اكتشف كيف يمكن لـ `@lru_cache` أن يحدث فرقًا كبيرًا في الأداء!

from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(35))


المُزخرف `@lru_cache` يقوم بتخزين نتائج استدعاءات الدالة. إذا تم استدعاء الدالة بنفس الوسائط مرة أخرى، فسيتم إرجاع النتيجة المخزنة بدلاً من إعادة حسابها، مما يسرع العمليات المتكررة بشكل كبير، خاصة في الدوال العودية مثل دالة فيبوناتشي.

['#Python', '#برمجة', '#مطور_بايثون', '#تحسين_الأداء', '#lru_cache', '#نصائح_برمجية']
✨ تحسين سرعة استدعاء الدوال في بايثون باستخدام @lru_cache

هل تعاني من بطء في استدعاء دوال معينة تتكرر فيها نفس العمليات؟ الحل بسيط مع Decorator مميز في بايثون!

from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(10))
print(fibonacci(30))


الـ @lru_cache هو Decorator يقوم بتخزين نتائج استدعاءات الدالة. في المرة القادمة التي يتم فيها استدعاء الدالة بنفس المدخلات، يتم إرجاع النتيجة المخزنة مباشرة بدلاً من إعادة حسابها، مما يوفر الكثير من الوقت خاصة مع الدوال التكرارية أو التي تتطلب عمليات حسابية معقدة.

['#بايثون', '#برمجة', '#تطوير', '#تحسين_الأداء', '#lru_cache', '#PythonTips']