ভূমিকা
পাইথনে কনকারেন্ট প্রোগ্রামিং-এর জন্য থ্রেড, সাবপ্রসেস, জেনারেটর ইত্যাদি অপ্রোচ আছে। কনকারেন্সি হল একক প্রোগ্রামের মধ্যে একাধিক স্বতন্ত্র এক্সিকিউশন পাথ খোলা (I/O স্ট্রিম, SQL কুয়েরি ইত্যাদি) যাতে একসাথে ও স্বতন্ত্রভাবে চলতে লাগে।
কীভাবে করবেন
সিঙ্গেল থ্রেড (সিকোয়েনশিয়াল)
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'
]
def visit_site(site_url):
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(" *** end of the program ***")
আউটপুট দেখাবে প্রতিটি URL সিকোয়েনশিয়ালি প্রসেস হচ্ছে। ১০০টা URL হলে খুব সময় লাগবে।
মাল্টিথ্রেডেড (প্যারালাল)
from threading import Thread
def visit_site(site_url):
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()
এখন সব রিকোয়েস্ট প্যারালালি যাচ্ছে, প্রোগ্রাম অপেক্ষা করছে না।
থ্রেড স্ট্যাটাস চেক
if t.is_alive():
print(f' *** {t} is Still executing')
else:
print(f' *** {t} is Completed')
আলোচনা
threadingলাইব্রেরি যেকোনো পাইথন কলেবলকে তার নিজস্ব থ্রেডে এক্সিকিউট করতে পারে।start()মেথড আর্গুমেন্টসহ ফাংশন আহ্বান করে।- থ্রেড একবার শুরু হলে অপারেটিং সিস্টেম tarafından ফুলি ম্যানেজড থাকে।