Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में थ्रेड्स को सिंक्रनाइज़ करना


पायथन के साथ प्रदान किया गया थ्रेडिंग मॉड्यूल एक सरल-से-लागू लॉकिंग तंत्र शामिल करता है जो आपको थ्रेड्स को सिंक्रनाइज़ करने की अनुमति देता है। एक नया लॉक Lock() विधि को कॉल करके बनाया जाता है, जो नया लॉक लौटाता है।

नए लॉक ऑब्जेक्ट की acquire(blocking) विधि का उपयोग थ्रेड्स को सिंक्रोनस रूप से चलाने के लिए मजबूर करने के लिए किया जाता है। वैकल्पिक blocking पैरामीटर आपको यह नियंत्रित करने में सक्षम बनाता है कि थ्रेड लॉक प्राप्त करने के लिए प्रतीक्षा करता है या नहीं।

यदि blocking को 0 पर सेट किया जाता है, तो थ्रेड तुरंत 0 मान के साथ लौटता है यदि लॉक प्राप्त नहीं किया जा सकता है और 1 यदि लॉक प्राप्त हो गया था। यदि blocking को 1 पर सेट किया जाता है, तो थ्रेड ब्लॉक हो जाता है और लॉक जारी होने की प्रतीक्षा करता है।

नए लॉक ऑब्जेक्ट की release() विधि का उपयोग लॉक को तब जारी करने के लिए किया जाता है जब इसकी आवश्यकता नहीं रहती है।

उदाहरण

#!/usr/bin/python import threading import time 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    # थ्रेड्स को सिंक्रनाइज़ करने के लिए लॉक प्राप्त करें       threadLock.acquire()       print_time(self.name, self.counter, 3)       # अगले थ्रेड को जारी करने के लिए लॉक मुक्त करें       threadLock.release() def print_time(threadName, delay, counter):    while counter:       time.sleep(delay)       print "%s: %s" % (threadName, time.ctime(time.time()))       counter -= 1 threadLock = threading.Lock() threads = [] # नए थ्रेड बनाएं thread1 = myThread(1, "Thread-1", 1) thread2 = myThread(2, "Thread-2", 2) # नए थ्रेड शुरू करें thread1.start() thread2.start() # थ्रेड्स को थ्रेड सूची में जोड़ें threads.append(thread1) threads.append(thread2) # सभी थ्रेड्स के पूरा होने की प्रतीक्षा करें for t in threads:    t.join() print "Exiting Main Thread"

जब उपरोक्त कोड निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम देता है -

Starting Thread-1 Starting Thread-2 Thread-1: Thu Mar 21 09:11:28 2013 Thread-1: Thu Mar 21 09:11:29 2013 Thread-1: Thu Mar 21 09:11:30 2013 Thread-2: Thu Mar 21 09:11:32 2013 Thread-2: Thu Mar 21 09:11:34 2013 Thread-2: Thu Mar 21 09:11:36 2013 Exiting Main Thread

  1. पायथन में issuperset() फंक्शन पायथन में issuperset() फंक्शन

    इस लेख में, हम पायथन में issuperset() और विभिन्न क्षेत्रों में इसके कार्यान्वयन के बारे में जानेंगे।यह मेथड बूलियन True वापस करता है यदि सेट B के सभी तत्व सेट A के सभी तत्वों को समाहित करते हैं जिसे तर्क के रूप में पारित किया जाता है और झूठा वापस करता है यदि A के सभी तत्व B में मौजूद नहीं हैं।इसका म

  1. - Python में लॉगिंग

    इस लेख में, हम Python में लॉगिंग और सुरक्षा में इसके विभिन्न चरणों के बारे में सीखेंगे।सबसे पहले, हमें लॉगिंग मॉड्यूल आयात करना होगा, फिर लॉगर का उपयोग करके वर्तमान स्थिति की जांच करनी होगी और संदेश लॉग करने होंगे। हमारे पास 5 गंभीरता स्तर हैं:Warning (चेतावनी)Info (जानकारी)Error (त्रुटि)Critical (ग

  1. Python ग्लोबल इंटरप्रेटर लॉक (GIL) क्या है Python ग्लोबल इंटरप्रेटर लॉक (GIL) क्या है

    इस लेख में, हम जानेंगे कि Python ग्लोबल इंटरप्रेटर लॉक (GIL) क्या है।यह एक लॉक या बाधा है जो Python इंटरप्रेटर की उपलब्धता को एक साथ कई थ्रेड्स के लिए प्रतिरोधी बनाती है। GIL को Python 3.x या उससे पहले के संस्करणों में एक दोष/समस्या के रूप में पहचाना जाता है क्योंकि यह मल्टी-थ्रेडेड आर्किटेक्चर में