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

पायथन में बैरियर ऑब्जेक्ट्स

बैरियर एक पायथन सिंक्रोनाइज़ेशन तकनीक प्रदान करता है जिसके साथ एकल या एकाधिक थ्रेड गतिविधियों के एक सेट में एक बिंदु तक प्रतीक्षा करते हैं और एक साथ प्रगति करते हैं।

एक बाधा वस्तु को परिभाषित करने के लिए, "थ्रेडिंग. बैरियर” का प्रयोग किया जाता है।

थ्रेडिंग.बैरियर(पार्टियां, एक्शन =कोई नहीं, टाइमआउट =कोई नहीं)

कहां,

  • पार्टियां =थ्रेड्स की संख्या

  • क्रिया =रिलीज़ होने पर किसी एक थ्रेड द्वारा कॉल किया जाता है।

  • टाइमआउट =डिफ़ॉल्ट टाइमआउट मान। यदि प्रतीक्षा () के लिए कोई टाइमआउट मान निर्दिष्ट नहीं है, तो इस टाइमआउट मान का उपयोग किया जाता है।

नीचे दी गई विधियों का उपयोग बैरियर वर्ग द्वारा किया जाता है।

Sr.No विधि और विवरण
1 पार्टियां
कॉमन बैरियर पॉइंट तक पहुंचने के लिए कई थ्रेड्स की आवश्यकता होती है।
2 n_waiting
कॉमन बैरियर पॉइंट में प्रतीक्षा कर रहे धागों की संख्या
3 टूटा
एक बूलियन मान, सही- यदि बाधा टूटी हुई अवस्था में है तो अन्य गलत।
4 प्रतीक्षा करें (समय समाप्त =कोई नहीं)
अधिसूचित होने या टाइमआउट होने तक प्रतीक्षा करें। यदि इस विधि को कॉल करते समय कॉलिंग थ्रेड ने लॉक प्राप्त नहीं किया है, तो रनटाइम त्रुटि उठाई जाती है।
यह विधि अंतर्निहित लॉक को रिलीज़ करती है और तब तक ब्लॉक करती है जब तक कि यह किसी अन्य थ्रेड में एक ही स्थिति चर के लिए एक अधिसूचना () या Inform_all () विधि कॉल द्वारा जागृत नहीं हो जाती है, या जब तक वैकल्पिक टाइमआउट नहीं होता है। एक बार जागृत या समय समाप्त हो जाने पर, यह ताला फिर से प्राप्त कर लेता है और वापस आ जाता है।
जब समयबाह्य तर्क मौजूद है और नहीं कोई नहीं , यह एक फ्लोटिंग पॉइंट नंबर होना चाहिए जो सेकंड (या उसके अंश) में ऑपरेशन के लिए टाइमआउट निर्दिष्ट करता है।
5 reset()
बैरियर को डिफ़ॉल्ट स्थिति में सेट करें या वापस करें। खाली अवस्था। और उस पर प्रतीक्षा कर रहे थ्रेड्स को BrokenBarrierError प्राप्त होगा।
6 निरस्त ()
यह बाधा को एक टूटी हुई स्थिति में डाल देगा। यह सभी सक्रिय थ्रेड्स या भविष्य के किसी भी कॉल को BrokenBarrierError के साथ विफल होने के लिए प्रतीक्षा () का कारण बनता है।

barrierThread.py

यादृच्छिक आयात रैंडरेंज से थ्रेडिंग इंपोर्ट बैरियर, थ्रेडफ्रॉम टाइम इंपोर्ट टाइम, स्लीपनम =4# 4 थ्रेड्स को रिलीज़ होने के लिए इस बैरियर को पास करना होगा। b =बैरियर (संख्या) नाम =['इंडिया', 'जापान', ' यूएसए', 'चीन'] डीईएफ़ प्लेयर ():नाम =नाम। पॉप () स्लीप (रैंडरेंज (2, 5)) प्रिंट ('%s बैरियर पर पहुंच गया:% s \ n'% (नाम, ctime ()) )) b.wait () थ्रेड्स =[] प्रिंट ("रेस अब शुरू होता है ...") के लिए मैं रेंज में (संख्या):थ्रेड्स। एपेंड (थ्रेड (टारगेट =प्लेयर)) थ्रेड्स [-1]। स्टार्ट ()"" "नीचे लूप मुख्य स्क्रिप्ट के साथ आगे बढ़ने से पहले थ्रेड्स के पूरा होने की प्रतीक्षा को सक्षम बनाता है।" 

परिणाम

रेस अब शुरू... भारत बैरियर पर पहुंचा:शुक्र जनवरी 18 14:07:44 2019चीन बैरियर पर पहुंचा:शुक्र जनवरी 18 14:07:44 2019जापान बैरियर पर पहुंचा:शुक्र जनवरी 18 14:07:46 2019USA बैरियर पर पहुंचे:शुक्र जनवरी 18 14:07:46 2019सभी बैरियर प्वाइंट पर पहुंचे!

  1. पायथन में फाइल ऑब्जेक्ट्स?

    पायथन में, जब भी हम फ़ाइलों को पढ़ने या लिखने की कोशिश करते हैं, तो हमें किसी पुस्तकालय को आयात करने की आवश्यकता नहीं होती है क्योंकि इसे मूल रूप से संभाला जाता है। फ़ाइल ऑब्जेक्ट प्राप्त करने के लिए सबसे पहले हम बिल्ट-इन ओपन फ़ंक्शन का उपयोग करेंगे। खुला फ़ंक्शन एक फ़ाइल खोलता है और एक फ़ाइल ऑब्ज

  1. क्या पाइथन कार्य वस्तुएं हैं?

    जब आप def स्टेटमेंट का उपयोग करते हैं, या जब आप लैम्ब्डा एक्सप्रेशन का उपयोग करते हैं, तो Python आपके लिए फंक्शन ऑब्जेक्ट बनाता है: हम फंक्शन ऑब्जेक्ट को एट्रिब्यूट असाइन कर सकते हैं और उन्हें निम्नानुसार पुनः प्राप्त कर सकते हैं उदाहरण def foo(): pass foo.score = 20 print(type(foo)) print(foo.score

  1. पायथन और बोटो के साथ S3 ऑब्जेक्ट डाउनलोड करें 3

    इस पोस्ट में हम उदाहरण दिखाते हैं कि पायथन और बोटो 3 लाइब्रेरी का उपयोग करके aws S3 बकेट से फ़ाइलों और छवियों को कैसे डाउनलोड किया जाए। बोटो पायथन के लिए एक एडब्ल्यूएस एसडीके है। यह ऐसे कार्यों का उपयोग करने में आसान प्रदान करता है जो ईसी 2 और एस 3 बाल्टी जैसी एडब्ल्यूएस सेवाओं के साथ बातचीत कर सकत