Threading vs. multiprocessing In Hindi

Threading vs. multiprocessing In Hindi

पाइथन प्रोग्रामिंग लैंग्वेज में थ्रेडिंग और मल्टीप्रोसेसिंग प्रोग्रामिंग टास्क, पाइथन में एक साथ एक से अधिक मल्टीप्ल इंडिविजुअल प्रोग्रामिंग टास्क क्रिएट और रन करने के दो पॉपुलर मेथड हैं। थ्रेडिंग और मल्टीप्रोसेसिंग दोनों पाइथन यूजर प्रोग्रामर को मौजूदा प्रोग्राम को मल्टीप्ल टास्क में डिवाइड कर सॉल्व करने में हेल्प कर सकते हैं. लेकिन पाइथन में थ्रेडिंग और मल्टीप्रोसेसिंग दोनों अलग-अलग मेथड या आर्डर में काम करते हैं, और अलग-अलग तरह की पाइथन प्रोग्रामिंग इश्यूज सलूशन के लिए बेस्टचॉइस हैं।

Threading vs. multiprocessing In Hindi

What is threading in the Python programming language?

पाइथन प्रोग्रामिंग लैंग्वेज में थ्रेडिंग का अर्थ है, की एक ही प्रोग्राम टास्क में एक साथ एक से अधिक प्रोग्राम प्रोसेस में मल्टीप्ल थ्रेड क्रिएट और रन किए जाते है।

पाइथन प्रोग्राम के ग्रुप टास्क में थ्रेड एक छोटा सा एग्जीक्यूशन यूनिट मेथड या टास्क है। जहा मल्टीप्ल प्रोग्राम थ्रेड एक प्रोसेस की एक ही मेमोरी और सिस्टम रिसोर्स को शेयर कर सकते हैं।

पाइथन प्रोग्रामिंग यूजर को एक नया थ्रेड क्रिएट और मैनेज करने के लिए थ्रेडिंग मॉड्यूल प्रोवाइड करता है।

Example of Python threading.

import threading

def tasks():

print(“Thread task is active now”)

thrd1 = threading.Thread(target=tasks)

thrd2 = threading.Thread(target=tasks)

thrd1.start()

thrd2.start()

thrd1.join()

thrd2.join()

यहां, इस थ्रेडिंग एक्साम्प्ल में tasks() फ़ंक्शन को एग्जीक्यूट करने के लिए दो थ्रेड क्रिएट किए गए हैं।

Advantages of threading in the Python programming language.

  • थ्रेडिंग टास्क प्रोसेस के मुकाबले लाइटवेट टास्क है
  • सिस्टम में यूज़ मल्टीप्ल थ्रेड आसानी से ग्रुप मेमोरी और रिसोर्सेज को शेयर करते हैं
  • थ्रेडिंग उन कामों के लिए यूज़फुल,जिसमे सिस्टम यूजर को किसी टास्क प्रोसेस को वेट करने में समय लगता है, या डिफाइन टास्क के लिए.

Threading is an excellent choice for I/O operations in the system.

For example.

  • सिस्टम स्टोरेज लोकेशन से फ़ाइलें पढ़ना
  • नेटवर्क रिक्वेस्ट को टास्क में प्रोसेस करना
  • डेडिकेटेड वेब सर्वर से डेटा डाउनलोड करना
  • सिस्टम में यूज़र इनपुट का वेट करना

Disadvantages of threading task processes.

  • कई बार एक ही थ्रेडिंग टास्क ग्रुप में शेयर की गई मेमोरी और रिसोर्सेज से सिंक्रोनाइज़ेशन के इश्यूज और प्रॉब्लम डेवलप हो सकती हैं।
  • यदि थ्रेड़िग टास्क डेटा को केयरफुल्ली हैंडल या मैनेज नहीं किया जाता है, तो सिस्टम में मौजूद थ्रेड एक-दूसरे टास्क के साथ इंटरफेयर कर सकते हैं।
  • थ्रेड़िग टास्क CPython में, ग्लोबल इंटरप्रेटर लॉक (GIL) मल्टीप्ल थ्रेड द्वारा पाइथन बाइटकोड के एक साथ एग्ज़िक्यूशन को लिमिट करता है. इस वजह से थ्रेडिंग सामान्य रूप से CPU-बाउंड पाइथन प्रोग्राम सोर्स कोड के लिए स्पीडअप नहीं प्रोवाइड करता है।

What is multiprocessing in the Python programming language?

पाइथन प्रोग्रामिंग लैंग्वेज में मल्टीप्रोसेसिंग का अर्थ है, की पाइथन यूजर एक ही समय में एक से अधिक मल्टीप्ल इंडिविजुअल टास्क प्रोसेस को रन या प्रोसेस करना। पाइथन प्रोग्रामिंग लैंग्वेज में हर टास्क प्रोसेस का अपना एक सेपरेट मेमोरी स्पेस और पाइथन इंटरप्रेटर डिफाइन होता है।

पाइथन प्रोग्रामर यूजर को एक नया प्रोसेस क्रिएट करने और उसे मैनेज करने के लिए मल्टीप्रोसेसिंग मॉड्यूल प्रोवाइड करता है।

Example of Python multiprocessing.

import multiprocessing

def tasks():

print(“Multiprocessing Task is active now”)

prs1 = multiprocessing.Process(target=tasks)

prs2 = multiprocessing.Process(target=tasks)

prs1.start()

prs2.start()

prs1.join()

prs2.join()

यहां, इस प्रोग्राम में दो अलग-अलग इंडिविजुअल सेपरेट प्रोसेस tasks() फ़ंक्शन को रन करते हैं।

Advantages of multiprocessing in Python programming.

  • पाइथन प्रोग्रामिंग में मल्टीप्रोसेसिंग टास्क प्रोसेस अलग-अलग CPU कोर पर रन हो सकते हैं।
  • मल्टीप्रोसेसिंग पाइथन प्रोगाम CPU-इंटेंसि टास्कस के लिए बेस्ट चॉइस है।
  • पाइथन मल्टीप्रोसेसिंग फीचर्स CPU-बाउंड टास्क के लिए CPython GIL की मुख्य कमी को अवॉयड करता है।
  • हर टास्क मल्टीप्रोसेसिंग में प्रोसेस की अपनी एक मेमोरी होती है, जिससे मल्टीप्रोसेसिंग टास्क में कुछ शेयर्ड-मेमोरी की इश्यूज और प्रॉब्लम अवॉयड हो जाते हैं।

Disadvantages of multiprocessing in Python programming.

  • पाइथन मल्टीप्रोसेसिंग थ्रेडिंग टास्क से सिस्टम ज़्यादा मेमोरी का यूज़ करता है।
  • मल्टीप्रोसेसिंग में एक नया टास्क प्रोसेस क्रिएट करना सामान्य रूप से एक नया थ्रेड क्रिएट करने से ज़्यादा कॉस्टली होता है।
  • मल्टीप्रोसेसिंग प्रोसेस टास्क के बीच टास्क डेटा शेयर करना अधिक काम्प्लेक्स हो जाता है।
  • मल्टीप्रोसेसिंग टास्क प्रोसेस के बीच कम्युनिकेशन में ज़्यादा ओवरहेड हो सकता है।

Threading vs. multiprocessing concepts in Python

Each featureThreading concept in pythonMultiprocessing concept in python
Basic unit methodThread creates with individual group tasksProcess creates individual separate for all one or more task  
Memory usagesMultiple thread shared group memory resourcesIt provides separate memory resources for each process task
Resource usageThread task usage lower memory resourcesMultiprocessing usage higher memory resources
Creation methodThead task generally works fasterMultiprocessing process generally slower
Best for useThead task best use for i/o-bound tasksMultiprocessing process best for cpu-bound tasks
Communication channelThead task relatively easy through shared memory behaviourMultiprocessing process requires inter-process communication
Effect of cpython gil methodGil thread task important for cpu-bound codeMultiprocessing process each process has its own interpreter/gil method
For example,Thead task usages in client server network requestsMultiprocessing process usages in image/video data processing

Input/Output: I/O-bound vs. CPU-bound tasks.

पाइथन प्रोग्रामिंग में इन दो तरह के इनपुट आउटपुट सिस्टम टास्क को समझने से पाइथन यूजर को यह मैनेज करने में हेल्प मिलती है कि किसी पाइथन प्रोग्राम में थ्रेडिंग का यूज़ करना है या मल्टीप्रोसेसिंग टास्क प्रोसेस मेथड का।

I/O-bound Tasks Python Tasks.

पाइथन प्रोग्रामिंग में एक I/O-बाउंड सिस्टम टास्क अपना ज़्यादातर समय एक्सटर्नल सिस्टम टास्क प्रोसेस ऑपरेशन का वेट करने में यूज़ करते है।

Examples of Python I/O-bound Tasks.

  • डेडिकेटेड वेब सर्वर से फ़ाइलें और डाटा डाउनलोड करना
  • एपीआई रिक्वेस्ट को हैंडल या मैनेज करना
  • डेटाबेस से डिजायर फाइल को पढ़ना
  • मौजूदा सिस्टम में फ़ाइलें पढ़ना और लिखना

इन पाइथन सिस्टम टास्क के लिए, थ्रेडिंग फीचर्स काम की हो सकती है, क्योंकि जब सिस्टम किसी एक प्रोसेस थ्रेड का वेट कर रहा होता है. तो उस प्रोसेस में दूसरा थ्रेड वर्क कर सकता है।

Python CPU-bound Tasks.

पाइथन प्रोग्रामिंग में एक CPU-बाउंड प्रोसेस टास्क अपना अधिकतर समय टास्क कैलकुलेशन करने में मैनेज करता है।

Examples of Python CPU-bound tasks.

  • पाइथन प्रोग्रामिंग में काम्प्लेक्स मैथमेटिकल प्रोसेस कैलकुलेशन हैंडलिंग में इसे यूज़ करते है.
  • पाइथन ग्राफिकल इमेज ग्राफिक्स ऑब्जेक्ट प्रोसेसिंग में
  • लार्ज वॉल्यूम सिस्टम डेटा कैलकुलेशन में
  • कुछ साइंटिफिक बेस्ड सिमुलेशन प्रोसेस टास्क हैंडलिंग में

स्टैंडर्ड CPython में CPU-इंटेंसिव टास्क प्रोसेस को मैनेज करने के लिए, मल्टीप्रोसेसिंग टास्क अधिकतर बेहतर चॉइस हो सकती है. क्योंकि यह अलग-अलग प्रोसेस को मल्टीप्ल CPU कोर पर पाइथन प्रोग्राम सोर्स कोड को रन कर सकते है.

A simple example of threading and multiprocessing in Python programming.

यहाँ पाइथन यूजर एक ऐसे होटल रेस्टोरेंट की कल्पना करें।

Threading concept in Python.

एक होटल शेफ़ के पास एक समय में एक से अधिक कई कस्टमर फ़ूड ऑर्डर हो सकते हैं।

होटल शेफ़ पहले के एक ऑर्डर को स्टार्ट या प्रोसेस करता है, फिर अन्य कस्टमर के कुछ फ़ूड आइटम पकने का वेट करते हुए, दूसरे अन्य क्लाइंट ऑर्डर पर काम करता है।

एक प्रोसेस → कई थ्रेड रिसोर्स शेयर करते हैं।

Multiprocessing concept in Python.

अब इस बार पाइथन यूजर किसी ऐसे होटल में एक साथ कई शेफ़ की कल्पना करें, जिनमें से हर शैफ कोई अलग-अलग फ़ूड कस्टमर ऑर्डर पर अलग-अलग काम कर रहा है।

कई प्रोसेस → अलग-अलग वर्कर जिनके अपने रिसोर्स हैं।

When should a Python user use which?

Use threading in Python when.

यदि पाइथन प्रोग्रामिंग में आपका प्रोग्राम इनपुट/आउटपुट सिस्टम टास्क प्रोसेस ऑपरेशन के वेट में बहुत समय यूज़ करता है।

For example.

किसी डेडिकेटेड वेब एफटीपी सर्वर लोकेशन पर मल्टीप्ल क्लाइंट फ़ाइलें डाउनलोड या अपलोड करना।

             ↓

थ्रेड टास्क 1 → फ़ाइल 1

थ्रेड टास्क 2 → फ़ाइल 2

थ्रेड टास्क 3 → फ़ाइल 3

थ्रेड टास्क 4 → फ़ाइल 4

थ्रेड टास्क 5 → फ़ाइल 5

Use multiprocessing in Python when.

पाइथन प्रोग्रामिंग में यूजर क्रिएटेड प्रोग्राम टास्क या प्रोसेस को बहुत अधिक CPU कंप्यूटेशन की ज़रूरत होती है।

For example.

प्रोसेस 1 → CPU कैलकुलेशन 1 → CPU कोर 1

प्रोसेस 2 → CPU कैलकुलेशन 2 → CPU कोर 2

प्रोसेस 3 → CPU कैलकुलेशन 3 → CPU कोर 3

प्रोसेस 4 → CPU कैलकुलेशन 4 → CPU कोर 4

प्रोसेस 5 → CPU कैलकुलेशन 5 → CPU कोर 5

Important Note in Python → GIL.

जब पाइथन में कंकरेंसी फीचर्स को एनालाइज किया जाता है, तो ग्लोबल इंटरप्रेटर लॉक (GIL) एक इम्पोर्टेन्ट कॉन्सेप्ट है।

स्टैंडर्ड CPython इम्प्लीमेंटेशन कांसेप्ट में, GIL मेथड एक समय में सिर्फ़ एक ही सिस्टम यूजर क्रिएटेड थ्रेड को किसी स्पेशल इंटरप्रेटर के अंदर पाइथन बाइटकोड को रन करने की परमिशन को प्रोवाइड करता है। इस वजह से, सिर्फ़ इसमें एक से अधिक थ्रेड ऐड करने से सामान्य रूप से CPU-बाउंड पाइथन प्रोग्राम सोर्स कोड तेज़ी से रन नहीं होता है।

जैसाकि, पाइथन में थ्रेड अभी भी I/O-बाउंड प्रोग्राम के लिए बहुत काम के फीचर हो सकते हैं, क्योंकि पाइथन में थ्रेड तब भी आगे बढ़ सकते हैं, जब दूसरे अन्य थ्रेड I/O सिस्टम रिसोर्सेज में अपनी बारी का वेट कर रहे हों।

पाइथन टास्क में मल्टीप्रोसेसिंग मल्टीप्ल इंडिविजुअल सिस्टम टास्क प्रोसेस को यूज़ करता है, इस वजह से हर सिस्टम टास्क प्रोसेस का अपना पाइथन इंटरप्रेटर और GIL डिफाइन होता है।

Conclusion of Python Threading vs. Multiprocessing.

पाइथन प्रोग्रामिंग लैंग्वेज में थ्रेडिंग और मल्टीप्रोसेसिंग दोनों ही पॉपुलर मल्टीप्ल टास्क प्रोसेस करने की तकनीकें या मेथड हैं।

  •  Threading tasks → कई I/O-बाउंड टास्क के लिए सबसे बेस्ट चॉइस है.
  • Multiprocessing → अधिकतर मामलो में CPU-बाउंड टास्क के लिए सबसे बेस्ट चॉइस है.
  • Threading tasks → पाइथन प्रोग्राम में क्रिएट थ्रेड ग्रुप टास्क में सिंगल मेमोरी को शेयर करते हैं.
  • Multiprocessing tasks → हर यूजर डिफाइन पाइथन प्रोसेस टास्क की अपनी एक अलग इंडिविजुअल मेमोरी होती है

There’s an easy rule to remember for both threading and multiprocessing in the Python programming language.

  • Waiting → का मतलब थ्रेडिंग टास्क है.
  • Computing → का मतलब हर टास्क का अपने इंडिविजुअल टास्क मल्टीप्रोसेसिंग है.

Leave a Reply