Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में थ्रेड्स के साथ Concurrency को कैसे कार्यान्वित करें?

परिचय

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

Concurrency एक एकल प्रोग्राम के भीतर तर्क का एक टुकड़ा है जो निष्पादन के कई अलग-अलग रास्तों को खोलने की अनुमति देता है, जिसमें I / O की अलग-अलग धाराएँ, SQL क्वेरी चलाना शामिल है, इस तरह से निष्पादन एक साथ और एक दूसरे से स्वतंत्र दोनों लगता है ।

इसे कैसे करें..

पहले हम साइट यूआरएल के माध्यम से जाने के लिए एक थ्रेड बनाते हैं और बाद में प्रोग्राम को गति देने के लिए थ्रेडिंग अवधारणाओं का उपयोग करने के तरीके को देखते हैं।

# Step 1 - Make a list of website url you want to visit today
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']


# function to request the url passed and return the status code
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')


# Let us create a single thread to fetch the response
if __name__ == '__main__':
for site_url in tutorialpoints_url:
visit_site(site_url)
print(f" *** end of the program ***")


*** https://www.tutorialspoint.com/python/index.htm returned 200 after 0:00:00.091103 seconds
*** https://www.tutorialspoint.com/cplusplus/index.htm returned 200 after 0:00:00.069889 seconds
*** https://www.tutorialspoint.com/java/index.htm returned 200 after 0:00:00.075864 seconds
*** https://www.tutorialspoint.com/html/index.htm returned 200 after 0:00:00.075270 seconds
*** https://www.tutorialspoint.com/cprogramming/index.htm returned 200 after 0:00:00.077984 seconds
*** end of the program ***

आपने आउटपुट से क्या देखा? साइट url को क्रमिक रूप से संसाधित किया जाता है, बस कल्पना करें कि यदि आप विभिन्न भौगोलिक स्थानों से 100 url देखना चाहते हैं तो आपका प्रोग्राम सर्वर से प्रतिक्रिया की प्रतीक्षा में बहुत समय व्यतीत कर सकता है।

आइए अब समानांतर में अनुरोध सबमिट करने के लिए एक थ्रेडेड प्रोग्राम लिखें और प्रतीक्षा किए बिना अगले चरण पर आगे बढ़ें।

from threading import Thread

# function to request the url passed and return the status code
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')

# Loop through the website url and create threads for each url
if __name__ == '__main__':
for site_url in tutorialpoints_url:
t = Thread(target=visit_site, args=(site_url,))
t.start()


*** https://www.tutorialspoint.com/python/index.htm returned 200 after 0:00:00.082176 seconds
*** https://www.tutorialspoint.com/html/index.htm returned 200 after 0:00:00.086269 seconds
*** https://www.tutorialspoint.com/java/index.htm returned 200 after 0:00:00.100746 seconds
*** https://www.tutorialspoint.com/cplusplus/index.htm returned 200 after 0:00:00.120744 seconds *** https://www.tutorialspoint.com/cprogramming/index.htm returned 200 after 0:00:00.111489 seconds

चर्चा..

  • थ्रेडिंग लाइब्रेरी का उपयोग किसी भी पायथन कॉल करने योग्य को अपने थ्रेड में निष्पादित करने के लिए किया जा सकता है।

  • start() विधि साइट_यूआरएल तर्कों के साथ विज़िट_साइट फ़ंक्शन को आमंत्रित करती है।

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

अब यदि आप देखना चाहते हैं कि आपके धागे जीवित हैं या मृत (पूर्ण) तो हम is_alive फ़ंक्शन का उपयोग कर सकते हैं।

if t.is_alive():
print(f' *** {t} is Still executing')
else:
print(f' *** {t} is Completed')


*** <Thread(Thread-10, stopped 4820)> is Completed

  1. बोकेह (पायथन) में छवियों के साथ कैसे काम करें?

    बोकेह में छवियों के साथ काम करने के लिए, image_url() . का उपयोग करें विधि और छवियों की एक सूची पास करें। कदम किसी फ़ाइल में सहेजे गए आउटपुट को उत्पन्न करने के लिए डिफ़ॉल्ट आउटपुट स्थिति को कॉन्फ़िगर करें जब :func:show कहा जाता है। प्लॉटिंग के लिए एक नया चित्र बनाएं। दिए गए URL से लोड की गई छवियों क

  1. पायथन के साथ माइक्रोसॉफ्ट वर्ड कैसे पढ़ें?

    परिचय... कोई अपराध नहीं, मुझे Microsoft शब्द पसंद नहीं है और न ही स्प्रेडशीट। डेटा इंजीनियरिंग विशेषज्ञ होने के नाते, मुझे अक्सर Microsoft Word में परीक्षकों से परीक्षा परिणाम प्राप्त होते हैं। साँस! वे स्क्रीन शॉट्स, लिंक, बड़े, बहुत बड़े, बहुत बड़े पैराग्राफ को कैप्चर करने से लेकर वर्ड डॉक्यूमेंट

  1. पायथन के साथ एपीआई परिणामों की कल्पना कैसे करें

    परिचय.. एपीआई लिखने का एक सबसे बड़ा लाभ वर्तमान/लाइव डेटा निकालना है, भले ही डेटा तेजी से बदल रहा हो, एक एपीआई हमेशा अद्यतित डेटा प्राप्त करेगा। कुछ जानकारी का अनुरोध करने के लिए एपीआई प्रोग्राम बहुत विशिष्ट यूआरएल का उपयोग करेंगे उदा। Spotify या Youtube Music में 2020 के टॉप 100 सबसे ज्यादा बजाए ज