কম্পিউটার বিজ্ঞানের একটি থ্রেড হল নির্দেশাবলীর একটি সেট যা একটি শিডিউলারের দ্বারা স্বাধীনভাবে পরিচালিত হতে পারে, যা অপারেটিং সিস্টেমের একটি অংশ৷
থ্রেডিং এর প্রধান কাজ হল একসাথে একাধিক থ্রেড চালানো। থ্রেড মানে বিভিন্ন টাস্ক, প্রোগ্রামে ফাংশন কল এবং একাধিক থ্রেড একই সময়ে চলে তার মানে এই নয় যে সেগুলি বিভিন্ন মেশিনে চালানো হয়।
মাল্টি-থ্রেডিং দুটি ক্ষেত্রে ব্যবহার করা হয়।
-
যখন সাব-প্রোগ্রামের আউটপুটগুলিকে প্রধান প্রোগ্রামের সাথে একত্রিত করতে হয়।
-
যখন প্রধান প্রোগ্রামে কোডের টুকরো থাকে যা একে অপরের থেকে তুলনামূলকভাবে স্বাধীন।
থ্রেডিং মডিউল
পাইথন থ্রেডিং মডিউল প্রদান করে যা অত্যন্ত শক্তিশালী এবং থ্রেডের জন্য উচ্চ স্তরের সমর্থন প্রদান করে।
থ্রেডিং মডিউল অনেকগুলি ফাংশনকে সংজ্ঞায়িত করে যা থ্রেড সম্পর্কিত ডেটা পেতে ব্যবহৃত হয় এবং এই ফাংশনগুলি স্বয়ংক্রিয়ভাবে কার্যকর হয়৷
threading.active_count()
এই ফাংশনটি বর্তমানে জীবিত থ্রেড অবজেক্টের সংখ্যা প্রদান করে। এখানে প্রত্যাবর্তিত গণনা গণনা().
দ্বারা প্রত্যাবর্তিত তালিকার দৈর্ঘ্যের সমানthreading.current_thread()
এই ফাংশনটি বর্তমান থ্রেড অবজেক্ট ফিরিয়ে দেয় এবং এটি কলারের নিয়ন্ত্রণের থ্রেডের সাথে সম্পর্কিত৷
threading.get_ident()
এই ফাংশনটি বর্তমান থ্রেডের 'থ্রেড আইডেন্টিফায়ার' প্রদান করে। এটি একটি অশূন্য পূর্ণসংখ্যা।
threading.enumerate()
এই ফাংশনটি বর্তমানে জীবিত সমস্ত থ্রেড অবজেক্টের একটি তালিকা প্রদান করে যার মধ্যে রয়েছে ডেমনিক থ্রেড, current_thread() ফাংশন একটি ডামি থ্রেড এবং প্রধান থ্রেড তৈরি করে এবং বাদ দেওয়া থ্রেড এবং থ্রেডগুলি বাদ দেয় যা এখনও শুরু হয়নি৷
threading.main_thread()
এই ফাংশনটি মূল থ্রেড অবজেক্ট রিটার্ন করে।
threading.settrace(func)
থ্রেডিং মডিউল থেকে সমস্ত থ্রেড শুরু হলে, একটি ট্রেস ফাংশন সেট করুন। run() মেথড কল করার আগে, এই ফাংশনটি প্রতিটি থ্রেডের জন্য sys.settrace() এ পাস করা হয়।
threading.setprofile(func)
থ্রেডিং মডিউল থেকে সমস্ত থ্রেড শুরু হলে, একটি প্রোফাইল ফাংশন সেট করুন। রান() পদ্ধতি কল করার আগে, এই ফাংশনটি প্রতিটি থ্রেডের জন্য sys.setprofile() এ পাস করা হয়৷
threading.stack_size([size])
এই ফাংশনটি থ্রেড স্ট্যাকের আকার প্রদান করে এবং নতুন থ্রেড তৈরি করার সময় এটি ব্যবহার করা হয়।
থ্রেডিং।TIMEOUT_MAX
এটি একটি ধ্রুবক যা ব্লকিং ফাংশন (Lock.acquire(), RLock.acquire(), Condition.wait(), ইত্যাদির টাইমআউট প্যারামিটারের জন্য অনুমোদিত সর্বাধিক মান রয়েছে।
উদাহরণ কোড
import threading def trace_function(): print("Passing the trace function") def profile(): print("PROFILE THREAD: " + str(threading.current_thread().getName())) class mythread(threading.Thread): def __init__(self, thread_name, thread_ID): threading.Thread.__init__(self) self.thread_name = thread_name self.thread_ID = thread_ID def run(self): print(str(self.thread_ID)); print("ACTIVE THREADS ARE: "+ str(threading.active_count())) print("CURRENT THREAD IS: " + str(threading.current_thread().getName())) my_thread1 = mythread("PP", 500) my_thread2 = mythread("PythonProgram", 1000); print("NAME OF THE MAIN THREAD: " + str(threading.main_thread().getName())) print("IDENTIFICATION OF MAIN THREAD: "+ str(threading.get_ident())) print("STACK SIZE = " + str(threading.stack_size())) print(threading.settrace(trace_function())) threading.setprofile(profile()) my_thread1.start() my_thread2.start() print("LIST OF ENUMERATION: ") print(threading.enumerate()) print("EXIT")
আউটপুট
NAME OF THE MAIN THREAD: MainThread IDENTIFICATION OF MAIN THREAD: 5436 STACK SIZE = 0 Passing the trace function None PROFILE THREAD: MainThread 500 1000LIST OF ENUMERATION: ACTIVE THREADS ARE: 6 [<_MainThread(MainThread, started 5436)>, <Thread(Thread-4, started daemon 1960)>, <Heartbeat(Thread-5, started daemon 6452)>, <HistorySavingThread(IPythonHistorySavingThread, started 4304)>, <mythread(Thread-8, started 8460)>, <mythread(Thread-9, started 4668)>] EXIT CURRENT THREAD IS: Thread-8 ACTIVE THREADS ARE: 5 CURRENT THREAD IS: Thread-9