Python में मल्टीथ्रेडिंग का उपयोग कैसे करें?

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Python में मल्टीथ्रेडिंग और मल्टीप्रोसेसिंग का परिचय

आधुनिक एप्लिकेशन बनाते समय अक्सर प्रदर्शन बढ़ाने की ज़रूरत होती है। यह कार्यों को समानांतर रूप से निष्पादित करके प्राप्त किया जाता है। Python में इसके लिए मल्टीथ्रेडिंग और मल्टीप्रोसेसिंग जैसे टूल का उपयोग किया जाता है। ग्लोबल इंटरप्रेटर लॉक (GIL) के बावजूद, Python में मल्टीथ्रेडिंग प्रोग्राम को काफी तेज़ कर सकती है। यह विशेष रूप से I/O (इनपुट-आउटपुट) से जुड़े कार्यों के लिए उपयोगी है, जैसे नेटवर्क रिक्वेस्ट या फ़ाइलों के साथ काम करना।

इस गाइड में, हम समझेंगे कि Python में मल्टीथ्रेडिंग कैसे काम करती है। हम threading लाइब्रेरी का अध्ययन करेंगे, इसकी तुलना multiprocessing से करेंगे और व्यावहारिक उदाहरण देंगे। इससे आपको कोड को ऑप्टिमाइज़ करने और निष्पादन को तेज़ करने में मदद मिलेगी।

Python में मल्टीथ्रेडिंग क्या है?

Python में मल्टीथ्रेडिंग एक ही प्रोसेस के अंदर कई थ्रेड (threads) चलाने की अनुमति देती है। प्रत्येक थ्रेड कोड का एक हिस्सा समानांतर रूप से निष्पादित करता है। यह उन कार्यों के लिए प्रभावी है जहाँ बाहरी संसाधनों की प्रतीक्षा होती है।

I/O कार्यों के लिए मल्टीथ्रेडिंग के लाभ

मल्टीथ्रेडिंग प्रोग्राम को तेज़ बनाती है जब कार्यों में शामिल हों:

  • नेटवर्क रिक्वेस्ट, जैसे इंटरनेट से डेटा डाउनलोड करना।
  • फ़ाइलों के साथ काम करना, जिसमें पढ़ना और लिखना शामिल है।
  • डेटाबेस तक पहुँचना।
  • अन्य I/O ऑपरेशन जहाँ CPU प्रतीक्षा में निष्क्रिय रहता है।

हालाँकि, मल्टीथ्रेडिंग की सीमाएँ हैं। Python में ग्लोबल इंटरप्रेटर लॉक (GIL) होता है। GIL कई थ्रेड्स में Python बाइटकोड को एक साथ निष्पादित होने से रोकता है। इस वजह से, मल्टीथ्रेडिंग उन कार्यों के लिए उपयुक्त नहीं है जिनमें भारी CPU उपयोग होता है।

मल्टीथ्रेडिंग या मल्टीप्रोसेसिंग का उपयोग कब करें?

मल्टीथ्रेडिंग और मल्टीप्रोसेसिंग के बीच चुनाव कार्यों के प्रकार पर निर्भर करता है। मल्टीथ्रेडिंग प्रतीक्षा वाले परिदृश्यों के लिए उपयुक्त है, जबकि मल्टीप्रोसेसिंग गणना के लिए।

परिदृश्यों के अनुसार सुझाव

  • उच्च I/O वाले कार्य: मुख्य थ्रेड को ब्लॉक होने से बचाने के लिए threading (थ्रेड) का उपयोग करें।
  • गणना-गहन कार्य: GIL को बायपास करने और कई CPU कोर का उपयोग करने के लिए multiprocessing (प्रोसेस) लागू करें।
  • नेटवर्क API के साथ काम: रिक्वेस्ट को कुशलतापूर्वक संभालने के लिए threading चुनें।
  • समानांतर डेटा प्रोसेसिंग: प्रोसेसर पर लोड वितरित करने के लिए multiprocessing का उपयोग करना सबसे अच्छा है।

यह दृष्टिकोण संसाधनों के अकुशल उपयोग से बचने और प्रोग्राम निष्पादन को तेज़ करने में मदद करता है।

threading लाइब्रेरी: मूल बातें और उदाहरण

Python में threading लाइब्रेरी थ्रेड बनाने और प्रबंधित करने के लिए टूल प्रदान करती है। इसका उपयोग करना आसान है और यह शुरुआती लोगों के लिए उपयुक्त है।

थ्रेड बनाने का सरल उदाहरण

यहाँ Python में मल्टीथ्रेडिंग का एक बुनियादी उदाहरण है:

import threading
import time

def print_numbers():
    for i in range(5):
        print(f"संख्या: {i}")
        time.sleep(1)

# थ्रेड बनाएँ
thread = threading.Thread(target=print_numbers)
thread.start()

# मुख्य थ्रेड जारी रहता है
print("मुख्य थ्रेड समाप्त!")

इस कोड में, मुख्य थ्रेड तुरंत समाप्त हो जाता है, जबकि print_numbers फ़ंक्शन एक अलग थ्रेड में चलता है। यह दर्शाता है कि मल्टीथ्रेडिंग बिना प्रतीक्षा के काम जारी रखने की अनुमति कैसे देती है।

थ्रेड में आर्गुमेंट पास करना

थ्रेड फ़ंक्शन में डेटा पास करने के लिए args पैरामीटर का उपयोग करें:

def greet(name):
    print(f"नमस्ते, {name}!")

thread = threading.Thread(target=greet, args=("राहुल",))
thread.start()

यहाँ, "राहुल" आर्गुमेंट greet फ़ंक्शन में पास किया गया है। यह थ्रेड्स में कार्यों को पैरामीटराइज़ करने के लिए उपयोगी है।

join के साथ थ्रेड के समाप्त होने की प्रतीक्षा करना

join मेथड आपको थ्रेड के समाप्त होने तक प्रतीक्षा करने की अनुमति देता है।

ब्लॉग

पुस्तक अनुशंसाएँ