पायथन के साथ प्रदान किए गए थ्रेडिंग मॉड्यूल में एक सरल-से-कार्यान्वयन लॉकिंग तंत्र शामिल है जो आपको थ्रेड्स को सिंक्रनाइज़ करने की अनुमति देता है। लॉक () विधि को कॉल करके एक नया लॉक बनाया जाता है, जो नया लॉक लौटाता है।
थ्रेड को सिंक्रोनाइज़ करने के लिए बाध्य करने के लिए नई लॉक ऑब्जेक्ट की अधिग्रहण (अवरुद्ध) विधि का उपयोग किया जाता है। वैकल्पिक अवरोधन पैरामीटर आपको यह नियंत्रित करने में सक्षम बनाता है कि थ्रेड लॉक प्राप्त करने की प्रतीक्षा कर रहा है या नहीं।
यदि ब्लॉकिंग को 0 पर सेट किया जाता है, तो यदि लॉक प्राप्त नहीं किया जा सकता है तो थ्रेड 0 मान के साथ तुरंत वापस आ जाता है और यदि लॉक प्राप्त किया गया था तो 1 के साथ। यदि अवरोधन 1 पर सेट है, तो धागा अवरुद्ध हो जाता है और ताला जारी होने की प्रतीक्षा करता है।
नए लॉक ऑब्जेक्ट की रिलीज़ () विधि का उपयोग लॉक को रिलीज़ करने के लिए किया जाता है, जब इसकी आवश्यकता नहीं रह जाती है।
उदाहरण
#!/usr/bin/pythonimport threadingimport timeclass myThread (थ्रेडिंग.थ्रेड):def __init__(self, threadID, name, काउंटर):थ्रेडिंग.थ्रेड.__init__(self) self.threadID =threadID self.name =name सेल्फ.काउंटर =काउंटर डीईएफ़ रन (सेल्फ):प्रिंट "स्टार्टिंग" + सेल्फ.नाम # थ्रेड्स को सिंक्रोनाइज़ करने के लिए लॉक प्राप्त करें। .रिलीज () डीईएफ़ प्रिंट_टाइम (थ्रेडनाम, देरी, काउंटर):जबकि काउंटर:टाइम। स्लीप (देरी) प्रिंट "%s:%s"% (थ्रेडनाम, टाइम.सीटाइम (टाइम.टाइम ())) काउंटर - =1threadLock =थ्रेडिंग। लॉक () थ्रेड्स =[] # नया थ्रेड थ्रेड 1 बनाएं =माय थ्रेड (1, "थ्रेड -1", 1) थ्रेड 2 =माय थ्रेड (2, "थ्रेड -2", 2) # नया थ्रेडथ्रेड शुरू करें। प्रारंभ () थ्रेड 2 .start()# थ्रेड्स को थ्रेड लिस्ट में जोड़ें।जब उपरोक्त कोड निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
थ्रेड-1 प्रारंभ करना थ्रेड-2थ्रेड-1:गुरु मार्च 21 09:11:28 2013थ्रेड-1:गुरु मार्च 21 09:11:29 2013थ्रेड-1:गुरु मार्च 21 09:11:30 2013थ्रेड-2:गुरु मार्च 21 09:11:32 2013थ्रेड-2:गुरु मार्च 21 09:11:34 2013थ्रेड-2:गुरु मार्च 21 09:11:36 2013मुख्य थ्रेड से बाहर निकलना