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

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

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

थ्रेड को सिंक्रोनाइज़ करने के लिए बाध्य करने के लिए नई लॉक ऑब्जेक्ट की अधिग्रहण (अवरुद्ध) विधि का उपयोग किया जाता है। वैकल्पिक अवरोधन पैरामीटर आपको यह नियंत्रित करने में सक्षम बनाता है कि थ्रेड लॉक प्राप्त करने की प्रतीक्षा कर रहा है या नहीं।

यदि ब्लॉकिंग को 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मुख्य थ्रेड से बाहर निकलना

  1. issuperset () पायथन में

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

  1. पायथन में लॉग इन करना

    इस लेख में, हम पायथन में लॉग इन करने और सुरक्षा और सुरक्षा के विभिन्न चरणों के बारे में जानेंगे। सबसे पहले, हमें लॉगिंग मॉड्यूल को आयात करने की आवश्यकता है, इसके बाद लॉगर का उपयोग करके checj=k वर्तमान स्थिति और लॉग संदेशों का उपयोग करना होगा। हमारे पास गंभीरता के 5 स्तर हैं, अर्थात् - चेतावनी जानक

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

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