परिचय
पायथन में थ्रेड्स, सबप्रोसेसेज, जेनरेटर्स और अन्य ट्रिक्स का उपयोग करके कनकरेंट प्रोग्रामिंग के लिए अलग-अलग दृष्टिकोण हैं। थ्रेड्स इम्प्लीमेंट करने से पहले, आइए समझते हैं कि वास्तव में कनकरेंसी क्या है।
कनकरेंसी एक प्रोग्राम के भीतर तर्क का एक टुकड़ा है जो निष्पादन के कई अलग-अलग पथ खोलने की अनुमति देता है, जिसमें I/O के अलग-अलग स्ट्रीम्स, SQL क्वेरीज़ चलाना, आदि शामिल हैं, इस तरह से कि निष्पादन एक-दूसरे के साथ-साथ और स्वतंत्र दोनों प्रतीत होता है।
कैसे करें
पहले हम साइट URLs के माध्यम से जाने के लिए एक सिंगल थ्रेड बनाते हैं और फिर देखते हैं कि प्रोग्राम को तेज करने के लिए थ्रेडिंग कॉन्सेप्ट्स का उपयोग कैसे करें।
# स्टेप 1 - आज जिन वेबसाइट URLs पर जाना है उनकी लिस्ट बनाएं
import requests
tutorialpoints_url = [
'https://www.tutorialspoint.com/python/index.htm',
'https://www.tutorialspoint.com/cplusplus/index.htm',
'https://www.tutorialspoint.com/java/index.htm',
'https://www.tutorialspoint.com/html/index.htm',
'https://www.tutorialspoint.com/cprogramming/index.htm'
]
# पास किए गए URL को रिक्वेस्ट करने और स्टेटस कोड लौटाने का फंक्शन
def visit_site(site_url):
"""Makes a GET request to a website URL and prints response information"""
response = requests.get(site_url)
print(f' *** {site_url} returned {response.status_code} after {response.elapsed} seconds')
# रिस्पॉन्स लाने के लिए सिंगल थ्रेड बनाएं
if __name__ == '__main__':
for site_url in tutorialpoints_url:
visit_site(site_url)
print(f" *** end of the program ***")
आउटपुट: URLs क्रमिक रूप से प्रोसेस होते हैं, प्रत्येक अपने रिस्पॉन्स का इंतजार करता है।
अब एक थ्रेडेड प्रोग्राम लिखते हैं जो रिक्वेस्ट्स को समानांतर में सबमिट करता है और इंतजार किए बिना अगले चरण पर आगे बढ़ता है।
from threading import Thread
def visit_site(site_url):
"""Makes a GET request to a website URL and prints response information"""
response = requests.get(site_url)
print(f' *** {site_url} returned {response.status_code} after {response.elapsed} seconds')
if __name__ == '__main__':
for site_url in tutorialpoints_url:
t = Thread(target=visit_site, args=(site_url,))
t.start()
आउटपुट: सभी URLs लगभग एक साथ प्रोसेस होते हैं, कुल समय काफी कम हो जाता है।
चर्चा
threadingलाइब्रेरी का उपयोग किसी भी पायथन कॉल करने योग्य को अपने थ्रेड में निष्पादित करने के लिए किया जा सकता है।start()मेथडsite_urlआर्गुमेंट्स के साथvisit_siteफंक्शन को इनवोक करता है।- एक बार शुरू होने पर थ्रेड्स अपने स्वयं के थ्रेड में निष्पादित होते हैं जो पूरी तरह से ऑपरेटिंग सिस्टम द्वारा प्रबंधित होता है।
थ्रेड स्टेटस चेक करना
if t.is_alive():
print(f' *** {t} is Still executing')
else:
print(f' *** {t} is Completed')