خيوط في بايثون: تعلم كيفية التعامل مع الخيوط في بايثون



ستخبرك هذه المقالة حول Threading in Python ما هي الخيوط وأنواعها وكيفية بدء تشغيلها واستخدامها بأفضل طريقة ممكنة

اليوم، هي واحدة من أكثر لغات البرمجة المحبوبة في جميع أنحاء العالم. منذ إنشائها في التسعينيات ، حصلت على عدد كبير من المتابعين والمتحمسين والمبرمجين الذين يعملون كل يوم لتحسين لغة البرمجة هذه. من بين العديد من الميزات المضمنة في نظام Python البيئي ، الميزة الأكثر تميزًا هي Threading. لذلك في هذه المقالة ، سنتحدث عن Threading في Python ، وكيف يمكنك الاستفادة منها مع مزاياها وعيوبها.

سيتم تغطية المؤشرات التالية في هذه المقالة ،





لنبدأ

خيوط في بايثون

ما هو موضوع في بايثون؟

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



في حين أنه لشعور رائع أن تقوم بتشغيل عمليتين مختلفتين في نفس الوقت ، يحتاج المرء إلى فهم أن الإصدار الحالي من Python 3 وما فوقها مشفر بهذه الطريقة ، يمكن تشغيل هذه العملية فقط في أي وقت محدد. ومع ذلك ، إذا كنت بحاجة إلى عمليتين أو أكثر معًا في نفس الوقت في CPython ، فأنت بحاجة إلى ترميز بعض التعليمات البرمجية بلغات أخرى أيضًا ، مثل C و C ++ و Java ، ثم تشغيلها من خلال خيوط متعددة في Python.

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

قبل ذلك ، لدينا فكرة عن Threading في Python ، دعونا نفهم كيفية بدء سلسلة ،



بدء خيط في بايثون

الآن بعد أن اعتدت على تعريف الخيط في Python ، دعنا نلقي نظرة على مثال حول كيفية إنشاء مؤشر ترابط خاص بك في Python. لإنشاء سلسلة في Python ، تحتاج أولاً إلى استيراد مكتبة الخيوط ثم توجيهها للبدء () كما هو موضح في المثال أدناه:

استيراد التسجيل ، استيراد مؤشر الترابط ، وقت الاستيراد ، دالة thread_function (الاسم): logging.info ('Thread٪ s: start'، name) time.sleep (2) logging.info ('Thread٪ s: finishing'، name) if __name__ == '__main__': format = '٪ (asctime) s:٪ (message) s' logging.basicConfig (format = format، level = logging.INFO، datefmt = '٪ H:٪ M:٪ S') logging.info ( 'Main & ampampnbsp & ampampnbsp: قبل إنشاء الخيط') x = threading.Thread (target = thread_function، args = (1،)) logging.info ('Main & ampampnbsp & ampampnbsp: قبل تشغيل الخيط') x.start () logging.info ('Main & ampampnbsp & ampampampnbsp: انتظر حتى ينتهي مؤشر الترابط ') # x.join () logging.info (' Main & ampampnbsp & ampampnbsp: كل شيء ')

انتاج |

الإخراج - خيوط في بايثون - Edureka

عند تشغيل مؤشر ترابط في Python ، فإنك تقوم بتمريره كدالة تحتوي على قائمة من الوسائط التي يحتاج إلى تنفيذها. في المثال الذي تمت مشاركته أعلاه ، تقوم بإرشاد Python لتشغيل مؤشر الترابط ، thread_function () وتمريره إلى 1 كوسيطة.

عند تشغيل البرنامج أعلاه ، سيبدو الإخراج مثل هذا.

الجزء التالي من هذه المقالة حول 'Threading in Python' دعنا نرى ما هي الخيوط الخفية ،

ما هي خيوط الشيطان؟

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

لفهم هذا المفهوم بشكل أفضل ، ألق نظرة على المثال أعلاه. في السطر الثاني الأخير ، ينتظر البرنامج بضع ثوانٍ بعد أن أنهى جميع مهامه. هذا لأنه ينتظر انتهاء الخيط غير الخفي من عمله ثم الخروج من الواجهة. بمجرد انتهاء الخيط من عمله ، عندها فقط يخرج البرنامج.

الآن دعنا نعدل البرنامج أعلاه ونرى ما سيحدث ، إذا أدخلنا مؤشر ترابط خفي في الكود.

كود جديد: x = threading.Thread (target = thread_function، args = (1،)، daemon = True)

عند تشغيل البرنامج أعلاه مع التعديلات التي تم إجراؤها ، سيبدو مثل هذا.

الفرق بين هذين المخرجين هو أن السطر الأخير مفقود من السطر الأخير. لم تحصل thread_function () على فرصة لإكمالها ، لأننا أدخلنا خيطًا خفيًا وبمجرد وصوله إلى النهاية ، خرج من البرنامج.

الانضمام إلى موضوع

الآن بعد أن تعرفت على مفهوم إنشاء خيط في Python ، جنبًا إلى جنب مع مفهوم الخيط daemonic ، دعنا نكتشف كيف يمكنك ضم الخيوط في Python.

باستخدام وظيفة Join () في Python ، يمكنك ضم خيطين مختلفين ، وتوجيه أحدهما أيضًا إلى انتظار الآخر حتى ينتهي تنفيذه. غالبًا ما تكون هذه الميزة مفيدة عند قيامك بترميز تطبيقات كبيرة وتحتاج إلى تنفيذ جميع العمليات بترتيب معين

الجزء الأخير من هذه المقالة حول 'Threading in Python' سيُظهر لك الخيوط المتعددة العاملة ،

العمل مع خيوط متعددة

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

استيراد التسجيل ، استيراد مؤشر الترابط ، وقت الاستيراد ، دالة thread_function (الاسم): logging.info ('Thread٪ s: start'، name) time.sleep (2) logging.info ('Thread٪ s: finishing'، name) if __name__ == '__main__': format = '٪ (asctime) s:٪ (message) s' logging.basicConfig (format = format، level = logging.INFO، datefmt = '٪ H:٪ M:٪ S') thread = list ( ) للفهرس في النطاق (3): logging.info ('Main & ampampnbsp & ampampnbsp: إنشاء وبدء مؤشر ترابط٪ d.' ، الفهرس) x = threading.Thread (target = thread_function، args = (index،)) thread.append (x ) x.start () للفهرس ، مؤشر الترابط في تعداد (المواضيع): logging.info ('Main & ampampnbsp & ampampnbsp: قبل الانضمام إلى الخيط٪ d.' ، index) thread.join () logging.info ('Main & ampampnbsp & ampampnbsp: thread٪ d تم ، الفهرس)

انتاج |

في البرنامج أعلاه ، اتبعنا نفس الإجراء الخاص باستيراد مكتبة الخيوط ، وبدء الخيط ، وإنشاء سلاسل رسائل متعددة ثم استخدام وظيفة Join () لدمجها معًا وتنفيذها بترتيب معين.

عند تشغيل البرنامج أعلاه ، ستبدو النتيجة على هذا النحو.

خاتمة

إنها واحدة من أكثر الميزات المفيدة في Python. باستخدامه بالطريقة الصحيحة ، يمكنك جعل عملية الترميز بأكملها أكثر سهولة وكفاءة. من المقالة أعلاه ، نأمل أن تكون قد تعلمت أساسيات خيوط المعالجة وأن تستمر في استخدامها في البرمجة اليومية.

إذن هؤلاء هم الرجال آمل أن تكونوا قد أحببت هذا المقال.

للحصول على معرفة متعمقة حول Python مع تطبيقاتها المختلفة ، يمكنك ذلك للتدريب المباشر عبر الإنترنت مع دعم على مدار الساعة طوال أيام الأسبوع وإمكانية الوصول مدى الحياة.

لديك سؤال لنا؟ أذكرها في قسم التعليقات في هذه المقالة وسنعاود الاتصال بك.

جافا نوع arraylist من الأعداد الصحيحة