पाइथन 2.4 के साथ शामिल नया threading मॉड्यूल, पिछले खंड में चर्चा किए गए thread मॉड्यूल की तुलना में थ्रेड्स के लिए कहीं अधिक शक्तिशाली, उच्च-स्तरीय समर्थन प्रदान करता है।
threading मॉड्यूल thread मॉड्यूल के सभी मेथड्स को उजागर करता है और कुछ अतिरिक्त मेथड्स प्रदान करता है −
- threading.activeCount() − सक्रिय थ्रेड ऑब्जेक्ट्स की संख्या लौटाता है।
- threading.currentThread() − कॉलर के थ्रेड कंट्रोल में थ्रेड ऑब्जेक्ट्स की संख्या लौटाता है।
- threading.enumerate() − वर्तमान में सक्रिय सभी थ्रेड ऑब्जेक्ट्स की सूची लौटाता है।
मेथड्स के अलावा, threading मॉड्यूल में Thread क्लास है जो थ्रेडिंग को लागू करता है। Thread क्लास द्वारा प्रदान किए गए मेथड्स निम्नलिखित हैं −
- run() − run() मेथड एक थ्रेड के लिए प्रवेश बिंदु है।
- start() − start() मेथड run मेथड को कॉल करके एक थ्रेड शुरू करता है।
- join([time]) − join() थ्रेड्स के समाप्त होने की प्रतीक्षा करता है।
- isAlive() − isAlive() मेथड जांचता है कि क्या एक थ्रेड अभी भी निष्पादित हो रहा है।
- getName() − getName() मेथड एक थ्रेड का नाम लौटाता है।
- setName() − setName() मेथड एक थ्रेड का नाम सेट करता है।
Threading मॉड्यूल का उपयोग करके थ्रेड बनाना
threading मॉड्यूल का उपयोग करके एक नया थ्रेड लागू करने के लिए, आपको निम्नलिखित करना होगा −
- Thread क्लास का एक नया सबक्लास परिभाषित करें।
- अतिरिक्त तर्क जोड़ने के लिए __init__(self [,args]) मेथड को ओवरराइड करें।
- फिर, run(self [,args]) मेथड को ओवरराइड करें ताकि यह लागू किया जा सके कि थ्रेड शुरू होने पर क्या करना चाहिए।
एक बार जब आप नया Thread सबक्लास बना लेते हैं, तो आप इसका एक इंस्टेंस बना सकते हैं और फिर start() को आमंत्रित करके एक नया थ्रेड शुरू कर सकते हैं, जो बदले में run() मेथड को कॉल करता है।
उदाहरण
#!/usr/bin/python import threading import time exitFlag = 0 class myThread (threading.Thread): def __init__(self, threadID, name, counter): threading.Thread.__init__(self) self.threadID = threadID self.name = name self.counter = counter def run(self): print "Starting " + self.name print_time(self.name, 5, self.counter) print "Exiting " + self.name def print_time(threadName, counter, delay): while counter: if exitFlag: threadName.exit() time.sleep(delay) print "%s: %s" % (threadName, time.ctime(time.time())) counter -= 1 # Create new threads thread1 = myThread(1, "Thread-1", 1) thread2 = myThread(2, "Thread-2", 2) # Start new Threads thread1.start() thread2.start() print "Exiting Main Thread"
जब उपरोक्त कोड निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है −
Starting Thread-1 Starting Thread-2 Exiting Main Thread Thread-1: Thu Mar 21 09:10:03 2013 Thread-1: Thu Mar 21 09:10:04 2013 Thread-2: Thu Mar 21 09:10:04 2013 Thread-1: Thu Mar 21 09:10:05 2013 Thread-1: Thu Mar 21 09:10:06 2013 Thread-2: Thu Mar 21 09:10:06 2013 Thread-1: Thu Mar 21 09:10:07 2013 Exiting Thread-1 Thread-2: Thu Mar 21 09:10:08 2013 Thread-2: Thu Mar 21 09:10:10 2013 Thread-2: Thu Mar 21 09:10:12 2013 Exiting Thread-2