تطوير البرمجيات
Python المتقدم: التزامن والأداء
برنامج للمهندسين الذين بلغت خدمات Python وخطوط معالجتها لديهم حدودها. يبدأ بالقياس عبر cProfile وpy-spy وtracemalloc، ثم يتناول قفل المفسر العام والخيوط وتجمعات العمليات وasyncio، قبل الانتقال إلى توجيه NumPy والتخزين المؤقت والتسريع الأصلي للمسارات التي تبقى بطيئة.
نظرة عامة
تعلم عملي قابل للتطبيق في بيئة العمل.
يفشل العمل على الأداء عادةً بالطريقة نفسها: يعيد الفريق كتابة الحلقة التي تبدو بطيئة وينشرها، ثم تظل نقطة الوصول تنتهي مهلتها لأن الكلفة الحقيقية كانت في خطوة تسلسل بيانات أو في تجمع اتصالات لا يتجاوز خمسة. يشترط هذا البرنامج الدليل قبل التعديل. يقيس المشاركون حملاً حقيقياً ويصنفونه بأنه مقيَّد بالمعالج أو بالإدخال والإخراج أو بالذاكرة، وعندها فقط يختارون بين الخيوط والعمليات وasyncio. وتنال صحة التنفيذ المتزامن الوزن نفسه: التسابق والجمود والضغط العكسي والإلغاء والأعطال المتقطعة.
المتطلبات المسبقة
خبرة سنتين أو أكثر في تطوير Python تشمل الأصناف والمولّدات، مع تجربة تشغيل Python في الإنتاج أو في خطوط معالجة مجدولة.
الأهداف
- قياس أداء المعالج والذاكرة والزمن الفعلي لتحديد عنق الزجاجة بالدليل.
- شرح ما يحجبه قفل المفسر العام واختيار الخيوط أو العمليات بناءً على ذلك.
- بناء خدمات asyncio قادرة على تحمل آلاف عمليات الإدخال والإخراج المتزامنة بأمان.
- تشخيص حالات التسابق والجمود وأخطاء الإلغاء في الشيفرة المتزامنة.
- استبدال الحلقات الساخنة المفسَّرة بتوجيه NumPy أو التخزين المؤقت أو الامتدادات الأصلية.
- ضبط أعداد العمال والتجمعات والذاكرة لرفع الإنتاجية دون زعزعة استقرار الإنتاج.
الفئة المستهدفة
- مطورو الواجهات الخلفية الأقدم الذين يشغّلون خدمات Python تحت الحمل
- مهندسو البيانات الذين يديرون خطوط معالجة دفعية وتدفقية تتجاوز نوافذها الزمنية
- مهندسو المنصات وموثوقية الأنظمة الباحثون في زمن الاستجابة واستنفاد الموارد
- مهندسو التعلم الآلي الذين يحسّنون الاستدلال وخطوط تجهيز السمات
- المطورون في المجالات الكمية والعلمية ذوو الأحمال الحسابية الثقيلة
- المعماريون الذين يقررون أين يجب توسيع Python وأين لا يجب
محاور البرنامج
هيكل واضح لرحلة التعلم.
محاور البرنامج
تظهر محاور البرنامج في صندوق واحد بدلاً من تحويل كل سطر إلى وحدة منفصلة.
الوحدة 1: القياس قبل التحسين
قياس الأداء بـcProfile وpy-spy والتوقيت على مستوى السطر لحمل حقيقي
تحليل الذاكرة بـtracemalloc واكتشاف احتجاز الكائنات غير المقصود
القياس المرجعي الأمين باستخدام timeit وظروف قياس مستقرة
التمييز بين الاختناقات المرتبطة بالمعالج والإدخال والإخراج والذاكرة
الوحدة 2: قفل المفسر العام والخيوط والعمليات
ما الذي يسلسله قفل المفسر العام فعلياً وما الذي يتركه حراً
استخدام threading لتزامن الإدخال والإخراج والحد الذي يتوقف عنده نفعه
multiprocessing وتجمعات العمليات والكلفة الخفية لتسلسل البيانات
concurrent.futures بوصفها واجهة موحدة فوق نموذجي التنفيذ
الوحدة 3: Python غير المتزامن باستخدام asyncio
حلقة الأحداث والإجراءات المتزامنة والمهام وما الذي يعلّقه await فعلياً
إدارة آلاف استدعاءات HTTP المتزامنة عبر httpx أو aiohttp
المهل الزمنية ودلالات الإلغاء والمقارنة بين gather وTaskGroup
استدعاء المكتبات الحاجزة من شيفرة غير متزامنة دون تعطيل حلقة الأحداث
الوحدة 4: صحة التنفيذ في ظل التزامن
حالات التسابق والأقفال والإشارات وأنماط الجمود الكلاسيكية
الطوابير وتجمعات العمال وتطبيق الضغط العكسي على المنتجين السريعين
خاصية عدم تكرار الأثر وإعادة المحاولة الآمنة داخل خطوط المعالجة المتزامنة
إعادة إنتاج الأعطال المتقطعة الناتجة عن التزامن وتصحيحها عمداً
الوحدة 5: جعل شيفرة Python سريعة
التعقيد الخوارزمي وخيارات بنى البيانات التي تحكم زمن التنفيذ
توجيه العمليات العددية عبر NumPy بدل الحلقات المفسَّرة
التخزين المؤقت باستخدام functools.lru_cache وطبقة تخزين خارجية
مقارنة التسريع الأصلي بين امتدادات C وCython وNumba
الوحدة 6: التوسع والسلوك في بيئة الإنتاج
تحديد أعداد العمال وتجمعات الاتصال وميزانية الذاكرة لكل عملية
المعالجة بالتدفق والتقسيم لإبقاء استهلاك الذاكرة ثابتاً مع نمو الحجم
اختبار الحمل على خدمة Python وتفسير النسب المئوية لزمن الاستجابة
تحسين حمل حقيقي من القياس الأول إلى مكسب متحقق منه
المواد المقدمة
- دليل الدورة وأمثلة شيفرة موثّقة وملاحظات مرجعية
- بيئة معملية عملية ومستودعات بداية جاهزة
- تمارين وقوائم تحقق وقوالب شيفرة قابلة لإعادة الاستخدام
- شهادة إتمام من 4D
- دعم فني بعد انتهاء البرنامج
خيارات التدريب
يمكن تقديم البرامج داخل مقر المؤسسة، أو عن بُعد، أو بصيغة مدمجة بحسب جدول الفريق وموقعه وأهداف التعلم. عندما يتضمن البرنامج شهادة أو اختباراً من جهة خارجية، تبقى قواعد الشهادة ورسومها خاضعة لسياسات الجهة المانحة، بينما تقدم 4D التدريب ودعم التحضير.
لماذا البعد الرابع
تقيس 4D أثناء البرنامج أداء إحدى نقاط الوصول البطيئة أو مراحل خطوط المعالجة لديكم، فيرى المشاركون الفرق بين الاختناق المفترض والاختناق الذي يكشفه أداة القياس. ويُستكمل عمل التحسين حتى الوصول إلى رقم مقارن قبل وبعد يصلح لعرضه في نقاش الميزانية حول كلفة البنية التحتية.
دورات ذات صلة
أساسيات البرمجة بلغة Python
مقدمة عملية إلى Python للمهندسين والمحللين الذين يحتاجون شيفرة تعمل فعلاً لا مقتطفات تعليمية. يكتسب المشاركون طلاقة في أنواع البيانات والمجموعات والدوال والملفات ومعالجة الأخطاء، ثم يبنون برنامجاً صغيراً يقرأ بيانات حقيقية وينتج تقريراً قابلاً للاستخدام.
View coursePython المتوسط وممارسات الشيفرة النظيفة
برنامج موجّه للمطورين الذين تعمل شيفرة Python لديهم لكن يصعب تغييرها. يغطي dataclasses والمولّدات والمزخرفات ومديري السياق وتلميحات الأنواع، ثم يطبّق خطوات إعادة الهيكلة التي تحوّل وحدة من تسعمئة سطر إلى وحدات صغيرة مختبَرة تحرسها أدوات black وruff وmypy.
View courseأتمتة المهام المكتبية والبرمجة النصية بلغة Python
برنامج موجّه للفرق التي تهدر ساعات أسبوعية في أعمال متكررة على الملفات والجداول والتقارير. يقوم المشاركون بأتمتة هذه المهام باستخدام Python: معالجة الملفات دفعياً وجداول Excel وCSV واستدعاء واجهات REST وتنبيهات البريد والمهام المجدولة التي تعمل دون إشراف وتبلّغ بوضوح عند الفشل.
View course