المعالجة المتعددة هي تقنية شائعة في برمجة بايثون تسمح لك بتشغيل عمليات متعددة في وقت واحد، مما يؤدي غالبًا إلى تحسين الأداء واستخدام أكثر كفاءة لموارد النظام. تتعمق هذه المقالة في استخدام المعالجة المتعددة مكتبة في بايثون، مع التركيز بشكل خاص على رسم خريطة وظيفة. تتيح لك وظيفة الخريطة تطبيق دالة على كل عنصر في عنصر قابل للتكرار، مثل القائمة، وإرجاع قائمة جديدة مع النتائج. ومن خلال الاستفادة من المعالجة المتعددة، يمكننا موازاة هذه العملية لتحقيق قدر أكبر من الكفاءة وقابلية التوسع.
في هذه المقالة، سوف نستكشف المشكلة التي يمكن أن تكون المعالجة المتعددة باستخدام وظيفة الخريطة حلاً ممتازًا لها، ونناقش المكتبات والوظائف ذات الصلة، ونقدم شرحًا خطوة بخطوة للكود، ونتعمق في الموضوعات ذات الصلة التي تعتمد على العمود الفقري المعالجة المتعددة ووظيفة الخريطة.
خريطة المعالجة المتعددة: المشكلة والحل
المشكلة التي نهدف إلى حلها هي تحسين أداء وكفاءة تطبيق دالة على كل عنصر في كائن قابل للتكرار كبير، مثل قائمة أو صف أو أي كائن آخر يدعم التكرار. عند مواجهة مثل هذه المهام، قد يكون استخدام وظيفة الخريطة المضمنة أو فهم القائمة بطيئًا وغير فعال.
الحل هو استخدام مكتبة المعالجة المتعددة في بايثون، وتحديداً مكتبة مسبح الطبقة و رسم خريطة طريقة. باستخدام وظيفة Pool.map() متعددة المعالجةيمكننا توزيع تنفيذ وظيفتنا عبر عمليات متعددة.
شرح المدونة خطوة بخطوة
دعونا نحلل الكود ونوضح كيفية استخدام وظيفة خريطة المعالجة المتعددة بشكل فعال:
import multiprocessing import time def square(n): time.sleep(0.5) return n * n # Create the list of numbers numbers = list(range(10)) # Initialize the multiprocessing Pool pool = multiprocessing.Pool() # Use the map function with multiple processes squared_numbers = pool.map(square, numbers) print(squared_numbers)
- أولاً ، قم باستيراد ملف المعالجة المتعددة الوحدة، التي تحتوي على الأدوات اللازمة لاستخدام المعالجة المتوازية في بايثون.
- قم بإنشاء وظيفة تسمى مربع الذي ينام لمدة نصف ثانية ثم يقوم بإرجاع مربع وسيطة الإدخال الخاصة به. تحاكي هذه الوظيفة عملية حسابية تستغرق وقتًا معقولاً لإكمالها.
- إنشاء قائمة تسمى أرقام، والذي يحتوي على أعداد صحيحة من 0 إلى 9 (ضمناً).
- تهيئة أ مسبح كائن من وحدة المعالجة المتعددة. يعمل كائن التجمع كوسيلة لإدارة العمليات المنفذة التي ستستخدمها لموازاة مهامك.
- اتصل ب رسم خريطة الطريقة على كائن التجمع، وتمريرها في مربع وظيفة و أرقام قائمة. تقوم طريقة الخريطة بعد ذلك بتطبيق الدالة المربعة على كل عنصر في قائمة الأرقام بشكل متزامن، باستخدام العمليات المنفذة المتوفرة في التجمع.
- قم بطباعة القائمة الناتجة من Squared_numbers، والتي يجب أن تحتوي على القيم المربعة من قائمة الأرقام.
مكتبة بايثون للمعالجة المتعددة
الثعبان المعالجة المتعددة توفر المكتبة وسيلة بديهية لتنفيذ التوازي في برنامجك. إنه يخفي بعض التعقيد المرتبط عادةً بالبرمجة المتوازية من خلال تقديم تجريدات عالية المستوى مثل مسبح. تعمل فئة Pool على تبسيط توزيع العمل عبر عمليات متعددة، مما يتيح للمستخدم تجربة فوائد المعالجة المتوازية بأقل قدر من المتاعب.
وحدة Python Itertools والوظائف ذات الصلة
في حين أن المعالجة المتعددة تعد حلاً ممتازًا للعديد من المهام المتوازية، فمن الجدير بالذكر أن بايثون توفر أيضًا مكتبات وأدوات أخرى تلبي احتياجات مماثلة. على سبيل المثال، توفر وحدة itertools مجموعة كبيرة من الوظائف التي تعمل على العناصر القابلة للتكرار، وغالبًا ما تكون بكفاءة محسنة. بعض وظائف itertools مثل imap () و imap_unordered () يمكنه موازنة عملية تطبيق دالة على عنصر قابل للتكرار. ومع ذلك، من المهم ملاحظة أن أدوات itertools تركز في المقام الأول على الحلول المستندة إلى المكرر، في حين توفر مكتبة المعالجة المتعددة نهجًا أكثر شمولاً للتوازي، مما يوفر أدوات وقدرات إضافية تتجاوز الوظائف الشبيهة بالخريطة.