فلنتحدث عن بعض التطبيقات العملية لمصممي الديكور.
أعني ، لقد رأيناهم بالفعل في الفصول ، أليس كذلك؟
لقد رأينا كيف أن طريقة الفصل والطريقة الثابتة ، يمكننا إنشاء طرق للطبقة وطرق ثابتة في الفئة التي يمكن
للفصل المباشر استخدامها.
وإذا كنت لا تتذكر هذه ، فارجع إلى مقاطع الفيديو هذه.
لكني أريد أن أريكم أحد الأمثلة المفضلة لدي كمصمم ديكور.
سنقوم بإنشاء منطقتنا.
ما سنفعله هو أنني أريد أن أحظى بأداء.
مصمم.
وبالمناسبة ، هذا المصمم غير موجود في بايثون.
سنقوم ببنائه من الصفر.
ما أريد القيام به هو أن يكون لديّ مصمم أداء يمكنني استخدامه أثناء اختبار الكود الخاص بي لمعرفة مدى
سرعة تشغيل الكود الخاص بي.
على سبيل المثال ، إذا كان لديّ وظيفة ، فلنفترض أن الأمر يستغرق وقتًا طويلاً.
حسنًا ، لقد حان وقت الانتهاء.
لذلك سأقوم بحلقة طويلة حقًا وأقول إنني في نطاق دعنا نقول.
كل هذه الأرقام وسأقوم بحساب عشوائي أنا مضروبًا في خمسة.
هذه الوظيفة.
أريد أن أعرف مدى جودة أدائها ، وكم من المللي ثانية يستغرقها لإكمال هذا.
فكيف يمكننا حزام ذلك؟
أولاً سأفعل شيئًا لم نتحدث عنه بعد ، وهو أننا سنفعل شيئًا عن الوحدات والوحدات
المدمجة.
حتى الآن ، لن نتحدث عن هذا كثيرًا ، لكننا سنستورد من وحدة الوقت
شيئًا يسمى الوقت المناسب.
مرة أخرى ، شيء سنتحدث عنه في قسم الوحدة في الدورة التدريبية.
أنا أقول بشكل أساسي ، عندما قمت بتثبيت Python أو في حالتي عندما أستخدم هذا التموج ، فإنه
يمكنه الوصول إلى هذا الوقت إذا طلبت ذلك.
وفي هذه الحالة ، أقول ، مرحبًا ، أريد استخدام كائن أو وحدة الوقت هذه التي أحصل عليها من Python.
وهنا سنقوم بإنشاء مصمم الديكور الخاص بنا باتباع النمط الذي تعلمناه.
سأقول تحديد الأداء.
وسيقبل الأداء وظيفة كما رأيناها من قبل.
وهنا ، لدينا غلافنا.
لذلك دعنا نقول وظيفة الغلاف ووظيفة الغلاف.
إذا كنت تتذكر ، فستكون مرنة من خلال أخذ أقواس النجوم وأقواس الكلمات الرئيسية النجمية.
حتى نتمكن من تمريرها مهما كان عدد المعلمات التي نريدها ، لأننا لا نعرف كيف تعمل هذه الوظيفة ، وكم عدد المعلمات
التي ستحصل عليها.
وأريد أن أكون قادرًا على استخدام الأداء في جميع وظائفي.
الآن هنا أولاً ، ما سنفعله هو الحصول على نتيجة الدالة.
كن ال.
الوظيفة التي نتلقاها هنا ثم نقول ببساطة.
قم بتشغيل الوظيفة باستخدام قوس النجوم وأقواس الكلمات الرئيسية النجمية.
وأخيرًا ، في نهاية هذا ، أريد إرجاع النتائج.
ثم في النهاية سنعود مغني الراب.
لذلك لا شيء لم نره من قبل.
كان بإمكاني العودة إلى هنا للتو أو تشغيل الوظيفة ، لكنني سأوضح لك لماذا فعلت ذلك بهذه الطريقة في
غضون ثانية.
في الوقت الحالي ، لا تفعل وظيفتنا أي شيء حقًا.
إذا قمت بالنقر فوق تشغيل.
حسنًا ، لا يحدث شيء إذا قمت بتشغيل هذه الوظيفة لفترة طويلة.
لقد استغرق الأمر وقتًا طويلاً للتشغيل.
لكن هذا كل شيء.
لا شيء يحدث.
هذا عندما نجعل الأشياء ممتعة.
نريد الحساب من بداية تشغيل هذه الوظيفة إلى نهاية تشغيل هذه الوظيفة ، ويمكننا
استخدام وحدة الوقت للقيام بذلك.
يمكنني إنشاء وقت متغير واحد للبداية وأقول ببساطة الوقت.
لذا فأنا أقوم بتشغيل وظيفة الوقت التي ستبدأ.
حان الوقت ويقول ، هذه المرة الأولى ستكون PT واحدة.
وبعد هذه الوظيفة ، يتم تشغيل وظيفتنا الرئيسية ، وهي فترة طويلة.
سأقول ر اثنين وأقول ، ما الوقت؟
فى الحال.
لذا هذه المرة سوف نتحقق من الوقت الآن.
ثم سنقوم بتشغيل هذه الوظيفة ثم هذه المرة سوف نتحقق من الوقت.
ومهما كان الاختلاف بينهما هو المدة التي استغرقها هذا الجزء.
الصحيح.
لذلك كل ما نفعله هو طباعة سلسلة F وقل أنها استغرقت T واحد ناقص t اثنين.
الصحيح.
وهذا يعود في الواقع بالمللي ثانية.
لذلك سأقول فقط GMs للميلي ثانية.
وهذا كل شيء.
لقد قمت بتغليف وظيفتي بقطعة الوقت الإضافية هذه فقط ، ثم أقوم بالطباعة بمجرد تشغيل الوظيفة ، والمدة
التي استغرقتها.
لذلك دعونا نتحقق من ذلك.
إذا قمت الآن بتشغيل وظيفة الوقت الطويل الخاصة بي هنا وقمت بالنقر فوق تشغيل.
حسنًا ، لقد حصلت على رقم ناقص لأنني أخطأت هنا.
يجب أن يكون هذا t اثنين ناقص rt واحد لأن الوقت على RT واحد يمر بعض الوقت ثم TT اثنين.
لذا فإن TT اثنين ستكون دائمًا أكبر من TW واحد.
إذا قمت بتشغيل هذا.
حسنا.
استغرق الأمر 0. 16 مللي ثانية.
أعتقد أن هذه في الواقع ثوان.
الآن دعنا نجعل هذه الوظيفة الطويلة أطول إذا ذهبت هكذا ونقرت تشغيل.
يا ولد.
استغرق ذلك 1. 9 ثوان.
ماذا لو جعلته أطول إذا قمت بالنقر فوق "تشغيل"؟
وهذا هو الجزء الذي أواصل فيه الحديث حتى تعمل الوظيفة ، لأنه سيكون هناك صمت محرج.
خلاف ذلك ، آمل أن ينتهي هذا قريبًا لأنه ليس لدي أي شيء آخر أتحدث عنه.
هيا.
هذا يصبح محرجا.
حسنًا ، تعال.
يا ولد.
همم.
أنا ذاهب إلى الأمام بسرعة من خلال هنا.
يا ولد.
استغرق الأمر 19 ثانية.
هذا.
هذا سيء جدا.
لكن لدي الآن هذا المصمم الذي يمكنني تقديمه إلى حد كبير لأي وظيفة في برنامجي وقياس أداء
وظيفتي بالفعل.
مفيد جدا ، أليس كذلك؟
يمكنني الحصول على هذا الجزء من الكود وقبل أن نقول إنني أنشر الكود الخاص بي أو أضع الكود الخاص بي في العالم.
يمكنني اختبار مدى أداء وظائفي وربما يمكنني تحسين الأشياء بطرق مختلفة.
مفيد جدا جدا.
وفعلت ذلك في بضعة أسطر فقط من التعليمات البرمجية.
تسعة أسطر من التعليمات البرمجية.
الآن ، ضع في اعتبارك أن مصمم الأداء هذا يعتمد على الجهاز ومدى سرعة وحدة المعالجة المركزية والذاكرة على جهاز الكمبيوتر
الخاص بك.
لذا فإن ما استغرق مني 19 ثانية قد يستغرق منك الكثير أو أقل اعتمادًا على جهازك.
لكن هذه طريقة رائعة لمقارنة الوظائف نسبيًا ، لذا آمل بعد ذلك أن ترى قوة المصممين.
يُستخدم المصممون كثيرًا في مكتبات وأطر بايثون.
نحن أطر عمل سنتحدث عنها ، مثل Django و Flask يستخدمان الديكور.
ربما ترغب في الحصول على بعض أدوات المصادقة ، لذا يمكنك المصادقة عليها حيث لا يمكن
تشغيل كل وظيفة إلا إذا تمت مصادقة المستخدم ، ربما يكون كذلك.
لديهم امتياز تشغيل وظيفة مثل تسجيل الدخول إلى موقع ويب.
أو ربما تحتاج فقط إلى تسجيل الدخول أو تسجيل الدخول.
Decorator الذي يسجل فقط ويتيح لقاعدة البيانات الخاصة بك معرفة أن شخصًا ما قد قام بتسجيل الدخول إلى نظامك أو
مرحبًا ، قام شخص ما بشراء شيء ما من Amazon.
أو مرحبًا ، شخص ما طلب للتو طلب صداقة.
هناك الكثير من الاستخدامات لمصممي الديكور ، وهو موضوع صعب.
لن تراهم في جميع أنحاء كود بيثون.
إنها مجرد ميزة إضافية يمكنك استخدامها كلما أصبحت أكثر راحة مع Python.
لكنني آمل في نهاية كل هذا ، أن تفهمهم على الأقل حتى تتمكن يومًا ما من بناء بنفسك أو استخدام تلك التي
تم إنشاؤها مسبقًا بواسطة المكتبات والأطر.
سأراك في المرحلة التالية.
مع السلامة.