Adam Ebrahim نشر 11 يونيو 2021 أرسل تقرير نشر 11 يونيو 2021 في الوقت الحالي أنا أتعلم كيفية استخدام الـ threading و multiprocessing في بايثون لتشغيل عمليات معينة بالتوازي وتسريع الكود الخاص بي. لكن لدي مشكلة في معرفة الفرق بين هذه المكتبات، ما الفرق بين الكائنين التاليين؟ threading.Thread() multiprocessing.Process() متى أستعمل كلًا من مكتبة threading أو multiprocessing؟ 1 اقتباس
2 Ali Haidar Ahmad نشر 12 يونيو 2021 أرسل تقرير نشر 12 يونيو 2021 ال multithreading ليست دوماً الحل الأفضل لتسريع البرنامج: هناك عبء overhead مرتبط بإدارة ال Threads، لذلك لايكون من الجيد استخدامها للمهام البسيطة (الغاية الأساسية هي السرعة في التنفيذ، لكن في هكذا حالات قد تكون النتائج سيئة أي قد يزداد زمن التنفيذ وهذا ما لانريده فنحن بالأساس نتجه لتحقيق الThreading لكي يقل زمن التنفيذ وليس العكس) ال multithreading يزيد من تعقيد البرنامج ، مما يجعل تصحيح الأخطاء أكثر صعوبة. ال multiprocessing: هناك عبء مرتبط بها عندما يتعلق الأمر بعمليات الإخراج والإدخال. لاتتم مشاركة الذاكرة بين ال subprocess حيث يكون لكل subprocess نسخة كاملة خاصة به من الذاكرة وهذا يشكل عبء Overhead بالنسبة للبرامج الأخرى. إن الموديول multiprocessing يستخدم ال Processes أي أن التعليمة الثانية التي أشرت لها في كتابتك تقوم بإنشاء Processe أما الموديول multithreading يستخدم ال Threads أي أن التعليمة الأولى التي أشرت لها تقوم بإنشاء Thread، والفرق الأساسي بينهم أن الأولى تستخدم ذاكرة منفصلة لكل subprocess (كما أشرت في الأعلى) بينما ال Threads تتشارك الذاكرة وبالتالي في ال multiprocessing لاخوف من حدوث حالات تلف البيانات أو التوقف التام deadlock بينما في ال multithreading فهذا وارد الحدوث. متى نستخدم كل منها: إذا كان البرنامج يحوي العديد من مهام الإدخال والإخراج أو استخدام الشبكة فيفضل استخدام ال threading لأنها سيترتب عليها overhead أقل من ال multiprocessing. أو إذا كان لديك GUI في برنامجك. إذا كان برنامجك يحوي على العديد من العمليات الحسابية "CPU bound" فيفضل التعامل مع ال multiprocessing. 3 اقتباس
0 محمد أبو عواد نشر 11 يونيو 2021 أرسل تقرير نشر 11 يونيو 2021 تتميز مكتبة threading بأنها خفيفة الوزن وتتشارك الذاكرة ومسؤولة عن واجهة المستخدم وسريعة الاستجابة ويتم استخدامها بشكل جيد للتطبيقات المرتبطة بالإدخال و الإخراج, بينما مكتبة multiprocessing تستخدم مساحة ذاكرة منفصلة وأنوية متعددة لوحدة المعالجة المركزية وهي أسهل بكثير في الاستخدام, يمكنك استخدام threading إذا كان البرنامج الخاص بك يحتوي على الكثير من عمليات الادخال والاخراج أو يستخدام الشبكة ويمكنك ويمكنك استخدام multiprocessing إذا كان مرتبط بوحدة المعالجة المركزية واذا كان جهازك يحتوي على نوى متعددة 1 اقتباس
السؤال
Adam Ebrahim
في الوقت الحالي أنا أتعلم كيفية استخدام الـ threading و multiprocessing في بايثون لتشغيل عمليات معينة بالتوازي وتسريع الكود الخاص بي.
لكن لدي مشكلة في معرفة الفرق بين هذه المكتبات، ما الفرق بين الكائنين التاليين؟
متى أستعمل كلًا من مكتبة threading أو multiprocessing؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.