تسريع وظيفة، يجب على كل مبرمج يعرف المكتبة القياسية Lru_cache بيثون

النص الكامل 1291 الكلمات، وعندما يكون التعلم مدى المتوقع 4 دقيقة

المصدر: Pexels

تسريع الهدف الجديد: باستخدام ميزة التخزين المؤقت بسيطة، سطر واحد فقط من التعليمات البرمجية لتسريع وظيفة الخاص بك.

منذ وقت ليس ببعيد، لقد بنيت العمليات اليومية أنابيب ETL، لإثراء إدخال البيانات عن طريق استخراج البيانات من خدمة خارجية، ثم يتم تحميل نتيجة في قاعدة البيانات.

مع زيادة إدخال البيانات، انتظار استجابة إلى خادم خارجي يصبح تستغرق وقتا طويلا جدا، مما يجعل عملية ETL ببطء أكثر. بعد بعض التحقيقات، وجدت أنه بالمقارنة مع العدد الإجمالي (~ 500K) سجل، وليس الكثير من قيم الإدخال المختلفة (500).

لذلك وبعبارة أخرى، وذلك باستخدام نفس الحجة لاستدعاء الخدمات الخارجية، حول كل معلمة تريد تكرار 1000 مرة.

مثل حالة ذاكرة التخزين المؤقت حالات الاستخدام الرئيسي. وسائل مخبأ كلما وظيفة مقابل وظيفة حساب قيمة للمرة الأولى، وادخال والنتيجة في القاموس.

لكل استدعاء دالة لاحقة، أولا بفحص ذاكرة التخزين المؤقت من خلال النظر في ما إذا كان قد تم حساب النتائج. إذا وجدت في ذاكرة التخزين المؤقت، فهو مثالي، لا حاجة لحساب مرة أخرى! إذا لم يتم العثور، يتم تخزين النتائج والمدخلات والنتائج في ذاكرة التخزين المؤقت بحيث بجانب العثور عليه عندما استدعاء دالة.

وتأتي مكتبة القياسية بيثون مع العديد من المعروف قليلا ولكن قوية الحزمة. على سبيل المثال، استخدام functools lru_cache. (نيابة عن LRU "المستخدمة الأقل مؤخرا (الأقل مؤخرا المستخدمة)"، وحرفيا، وهذا واضح الوسائل التي ذاكرة التخزين المؤقت ستحتفظ على أحدث أزواج الإدخال / نتيجة.)

استيراد من lru_cache المرح (ج) أدوات في

وضع C بين قوسين قليلا وكأنه مزحة سيئة، لأنه functools يصبح أدوات المرح (أدوات مثيرة للاهتمام)، استخدم مخبأ بطبيعة الحال، مثيرة جدا للاهتمام!

هنا دون الكثير من التفسير. Lru_cache إدخال واستخدام ذلك لتزيين وظيفة من شأنها أن تولد أرقام فيبوناتشي.

وظيفة الديكور تعني وظيفة التعبئة والتغليف مع وظيفة ذاكرة التخزين المؤقت، ثم في كل مرة استدعاء وظيفة fib_cache، سوف يطلق على وظيفة ذاكرة التخزين المؤقت.

بدء السباق

أجرينا تجربة لتقييم ذاكرة التخزين المؤقت وظيفة وليس النسخة المخبأة من حساب الوقت ليأخذ كل فيبوناتشي 0-40، والنتائج في قوائم كل منها.

الفائز

للعمل صغير فيبوناتشي العدد، والفرق اثنين لا كبيرة، ولكن مرة واحدة في تحقيق مكاسب الكفاءة من حوالي 30 عينة، وظيفة مخبأ حتى تبدأ تتراكم.

ليس لدي الصبر على ترك والنسخة غير المخبأة تشغيل أكثر من 40 عينة، لأن الوقت يعمل لها هو النمو المتسارع. أما بالنسبة النسخة المخبأة، وقت التشغيل منه هو فقط زيادة الخطية.

هذا يكمل! سطر واحد فقط من بعيدا رمز من ذاكرة التخزين المؤقت بيثون. بعد كل شيء، فإنه ليس من الرهيب.

في المثال الأول، واستخدمت تحويل البيانات في إطار البيانات الباندا. ومن الجدير بالذكر أن وظيفة مخبأ يمكن تمرير إلى تطبيق الباندا، دون أي تغييرات أخرى.

المصدر: Pexels

ليست كبيرة؟ عليك أن تحاول ذلك ~

انتباه رسالة الابهام

معا نحن نشارك في التعلم وتطوير AI الجاف

مثل طبع، يرجى ترك رسالة وراء الكواليس، والامتثال للمعايير طبع

سمعت تطبيق كبير (كتل) هو مستقبل تطوير البرمجيات؟

سر! كيف قابلة للطي شاشة مصنوعة من؟

كيف تسعة الى خمسة وظيفة لتصبح مبرمج فعالة؟

اليوم صوت الأساسية | ألغت تماما! جوجل I / O خط مؤتمر 2020 المطور لا

7 وظائف JavaScript Utility التي تساعد على تحسين الكفاءة

RION-- شكل البيانات بسرعة، والتعاقد، المشترك

AI تمويل المشاريع مئات الآلاف أو مئات بل الملايين، وكيف يمكن لهذه الشركات المبتدئة "AI احتيال" سخيفة؟

7 أوامر الطرفية التي تسمح لك الضحك واحدة

دخول صناعة هندسة البرمجيات، وارتكب أكبر خطأ هو سهلة، ويمكنك اطلاق النار عليه؟

مساعدة الاتصال البلاد شيئا الشريان الأورطي سلس! تشينغ لان التوسع عالية السرعة ليه البناء الكبير

هو مثل هذا! وافقت محكمة يهاى من قبل المحكمة بعد التغيير التصميم المعماري أعلن

عندما قام تنشيط الريف شو روشان الربيع، نابضة بالحياة، مفعم بالأمل