कंप्यूटर विज्ञान में एक थ्रेड निर्देशों का एक समूह है जिसे एक शेड्यूलर द्वारा स्वतंत्र रूप से प्रबंधित किया जा सकता है, जो ऑपरेटिंग सिस्टम का एक हिस्सा है।
थ्रेडिंग का मुख्य कार्य एक ही समय में कई थ्रेड चलाना है। थ्रेड का अर्थ है प्रोग्राम में अलग-अलग कार्य, फ़ंक्शन कॉल और एक ही समय में कई थ्रेड चलाने का मतलब यह नहीं है कि वे अलग-अलग मशीनों पर निष्पादित होते हैं।
मल्टी-थ्रेडिंग का उपयोग दो मामलों में किया जाता है।
- जब उप-प्रोग्राम के आउटपुट को मुख्य प्रोग्राम के साथ जोड़ने की आवश्यकता होती है।
- जब मुख्य प्रोग्राम में कोड के टुकड़े होते हैं जो एक दूसरे से अपेक्षाकृत स्वतंत्र होते हैं।
थ्रेडिंग मॉड्यूल
पायथन थ्रेडिंग मॉड्यूल प्रदान करता है जो बहुत शक्तिशाली है और थ्रेड्स के लिए उच्च-स्तरीय समर्थन भी प्रदान करता है।
थ्रेडिंग मॉड्यूल बहुत सारे फ़ंक्शन परिभाषित करता है जिनका उपयोग थ्रेड से संबंधित डेटा प्राप्त करने के लिए किया जाता है और ये फ़ंक्शन स्वचालित रूप से निष्पादित होते हैं।
- threading.active_count() - वर्तमान में जीवित Thread ऑब्जेक्ट्स की संख्या लौटाता है।
- threading.current_thread() - वर्तमान Thread ऑब्जेक्ट लौटाता है।
- threading.get_ident() - वर्तमान थ्रेड का 'थ्रेड पहचानकर्ता' लौटाता है।
- threading.enumerate() - वर्तमान में जीवित सभी Thread ऑब्जेक्ट्स की सूची लौटाता है।
- threading.main_thread() - मुख्य Thread ऑब्जेक्ट लौटाता है।
- threading.settrace(func) - सभी थ्रेड्स के लिए ट्रेस फ़ंक्शन सेट करता है।
- threading.setprofile(func) - सभी थ्रेड्स के लिए प्रोफ़ाइल फ़ंक्शन सेट करता है।
- threading.stack_size([size]) - थ्रेड स्टैक का आकार लौटाता है।
- threading.TIMEOUT_MAX - ब्लॉकिंग फ़ंक्शन्स के टाइमआउट पैरामीटर के लिए अधिकतम मान।
उदाहरण कोड
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 1000 LIST 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