পরিচয়
পাইথনের বিভিন্ন পন্থা রয়েছে যেমন থ্রেড, সাবপ্রসেস, জেনারেটর এবং সমসাময়িক প্রোগ্রামিংয়ের জন্য অন্যান্য কৌশলগুলি ব্যবহার করা৷ আমরা থ্রেডগুলি প্রয়োগ করার আগে, আসুন আমরা বুঝতে পারি যে কনকারেন্সি কী৷
কনকারেন্সি হল একটি একক প্রোগ্রামের মধ্যে যুক্তির একটি অংশ যা সম্পাদনের অনেকগুলি স্বতন্ত্র পথ খোলার অনুমতি দেয়, যার মধ্যে রয়েছে I/O এর পৃথক স্ট্রীম, এসকিউএল কোয়েরি চালানো, এমনভাবে যাতে এক্সিকিউশন একই সাথে এবং একে অপরের থেকে স্বাধীন বলে মনে হয়। .
কিভাবে করতে হবে..
প্রথমে আমরা সাইটের url-এর মাধ্যমে যাওয়ার জন্য একটি একক থ্রেড তৈরি করি এবং পরে প্রোগ্রামটিকে গতি বাড়ানোর জন্য কীভাবে থ্রেডিং ধারণাগুলি ব্যবহার করতে হয় তা দেখি৷
# ধাপ 1 - আপনি আজই ভিজিট করতে চান এমন ওয়েবসাইট url-এর একটি তালিকা তৈরি করুন import requeststutorialpoints_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']
# ফাংশন পাস করা ইউআরএল অনুরোধ করতে এবং স্ট্যাটাস কোডডেফ ভিজিট_সাইট(সাইট_ইউআরএল):"""একটি ওয়েবসাইট ইউআরএলে একটি GET অনুরোধ করে এবং প্রতিক্রিয়া তথ্য প্রিন্ট করে""" প্রতিক্রিয়া =requests.get(site_url)print(f') *** {site_url} {response.elapsed} সেকেন্ড পরে {response.status_code} ফেরত দিয়েছে')
# আসুন আমরা একটি একক থ্রেড তৈরি করি __name__ =='__main__':টিউটোরিয়ালপয়েন্ট_ইউআরএল-এ সাইট_ইউআরএল:প্রিন্ট(f" *** প্রোগ্রামের শেষে ***")
*** https://www.tutorialspoint.com/python/index.htm 0:00:00.091103 সেকেন্ড পরে 200 রিটার্ন করেছে*** https://www.tutorialspoint.com/cplusplus/index.htm 200 রিটার্ন করেছে 0:00:00.069889 সেকেন্ডের পর*** https://www.tutorialspoint.com/java/index.htm 0:00:00.075864 সেকেন্ডের পরে 200 ফিরে এসেছে *** https://www.tutorialspoint.com/html/index .htm 0:00:00.075270 সেকেন্ডের পরে 200 ফেরত দিয়েছে*** https://www.tutorialspoint.com/cprogramming/index.htm 0:00:00.077984 সেকেন্ড পরে 200 ফেরত দিয়েছে*** প্রোগ্রামের সমাপ্তি ***
আপনি আউটপুট থেকে কি পর্যবেক্ষণ করেছেন? সাইটের url ক্রমানুসারে প্রসেস করা হয়, শুধু কল্পনা করুন যদি বিভিন্ন ভৌগোলিক অবস্থান থেকে 100 এর url থাকে যা আপনি দেখতে চান তাহলে আপনার প্রোগ্রামটি একটি সার্ভার থেকে প্রতিক্রিয়ার অপেক্ষায় অনেক সময় ব্যয় করতে পারে৷
আসুন এখন সমান্তরালভাবে অনুরোধ জমা দেওয়ার জন্য একটি থ্রেডেড প্রোগ্রাম লিখি এবং অপেক্ষা না করে পরবর্তী ধাপে এগিয়ে যাই।
থ্রেডিং ইম্পোর্ট থ্রেড# ফাংশন থেকে পাস করা ইউআরএল অনুরোধ করতে এবং স্ট্যাটাস কোডডেফ ভিজিট_সাইট(সাইট_ইউআরএল):"""একটি ওয়েবসাইট ইউআরএলে একটি GET অনুরোধ করে এবং প্রতিক্রিয়া তথ্য প্রিন্ট করে""" প্রতিক্রিয়া =requests.get(site_url) print(f' *** {site_url} {response.elapsed} সেকেন্ডের পরে {response.status_code} ফেরত দিয়েছে)# ওয়েবসাইটের url লুপ করুন এবং প্রতিটি urlif __name__ =='__main__':tutorialpoints_url:t-এ site_url-এর জন্য থ্রেড তৈরি করুন =থ্রেড(target=visit_site, args=(site_url,))t.start()
*** https://www.tutorialspoint.com/python/index.htm 0:00:00.082176 সেকেন্ড পরে 200 রিটার্ন করেছে*** https://www.tutorialspoint.com/html/index.htm 200 রিটার্ন করেছে 0:00:00.086269 সেকেন্ডের পর*** https://www.tutorialspoint.com/java/index.htm 0:00:00.100746 সেকেন্ডের পরে 200 ফিরে এসেছে** https://www.tutorialspoint.com/cplusplus/index .htm 0:00:00.120744 সেকেন্ড পরে 200 ফেরত দিয়েছে *** https://www.tutorialspoint.com/cprogramming/index.htm 0:00:00.111489 সেকেন্ড পরে 200 ফেরত দিয়েছে
আলোচনা..
-
থ্রেডিং লাইব্রেরিটি তার নিজস্ব থ্রেডে যেকোন পাইথন কলযোগ্য চালানোর জন্য ব্যবহার করা যেতে পারে।
-
start() পদ্ধতি site_url আর্গুমেন্ট সহ visit_site ফাংশনকে আহ্বান করে।
-
থ্রেডগুলি একবার শুরু হলে তাদের নিজস্ব থ্রেডে কার্যকর করা হয় যা সম্পূর্ণরূপে অপারেটিং সিস্টেম দ্বারা পরিচালিত হয়৷
এখন আপনি যদি দেখতে চান আপনার থ্রেডগুলি জীবিত নাকি মৃত (সম্পূর্ণ) আমরা is_alive ফাংশন ব্যবহার করতে পারি।
যদি t.is_alive():print(f' *** {t} এখনও কার্যকর হচ্ছে')else:print(f' *** {t} সম্পন্ন হয়েছে')
*** <থ্রেড(থ্রেড-10, থামানো 4820)> সম্পন্ন হয়েছে