पायथन 2.4 के साथ शामिल नया थ्रेडिंग मॉड्यूल, पिछले अनुभाग में चर्चा किए गए थ्रेड मॉड्यूल की तुलना में थ्रेड्स के लिए अधिक शक्तिशाली, उच्च-स्तरीय समर्थन प्रदान करता है।
थ्रेडिंग मॉड्यूल थ्रेड मॉड्यूल के सभी तरीकों को उजागर करता है और कुछ अतिरिक्त विधियां प्रदान करता है -
- threading.activeCount() - सक्रिय थ्रेड ऑब्जेक्ट्स की संख्या लौटाता है।
- threading.currentThread() - कॉलर के थ्रेड कंट्रोल में थ्रेड ऑब्जेक्ट्स की संख्या लौटाता है।
- threading.enumerate() - वर्तमान में सक्रिय सभी थ्रेड ऑब्जेक्ट्स की सूची लौटाता है।
विधियों के अलावा, थ्रेडिंग मॉड्यूल में Thread क्लास है जो थ्रेडिंग को लागू करता है। Thread क्लास द्वारा प्रदान की गई विधियां निम्नानुसार हैं -
- run() - run() विधि एक थ्रेड के लिए प्रवेश बिंदु है।
- start() - start() विधि run विधि को कॉल करके एक थ्रेड शुरू करती है।
- join([time]) - join() थ्रेड्स के समाप्त होने की प्रतीक्षा करता है।
- isAlive() - isAlive() विधि जांचती है कि क्या एक थ्रेड अभी भी निष्पादित हो रहा है।
- getName() - getName() विधि एक थ्रेड का नाम लौटाती है।
- setName() - setName() विधि एक थ्रेड का नाम सेट करती है।
थ्रेडिंग मॉड्यूल का उपयोग करके थ्रेड बनाना
थ्रेडिंग मॉड्यूल का उपयोग करके एक नया थ्रेड लागू करने के लिए, आपको निम्नलिखित करना होगा -
- 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 # नए थ्रेड बनाएं thread1 = myThread(1, "Thread-1", 1) thread2 = myThread(2, "Thread-2", 2) # नए थ्रेड शुरू करें 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