दिलचस्प पोस्ट
दृश्य स्टूडियो 64 बिट? 4xcode में पायथन? कैसे बताओ कि क्या वर्तमान व्यूपोर्ट में एक DOM तत्व दृश्यमान है? विंडो के शीर्षक बार में एक अतिरिक्त बटन कैसे जोड़ें? MATLAB: फ़ाइल से पढ़ने वाली यूटीएफ -8-एन्कोडेड पाठ को कैसे प्रदर्शित किया जाए? एंड्रॉइड में वेबव्यू को यूआरएल लोड करते हुए प्रगति कैसे प्रदर्शित करें? मेल में उपयोग करने के लिए स्ट्रिंग एस्केप () मैं एक RDD को दो या अधिक RDD में कैसे विभाजित कर सकता हूं? सीएसएस: कैसे कहते हैं। वर्ग: पिछले प्रकार दशमलव, फ्लोट और डबल में अंतर। नेट? कैसे VBA के साथ निर्दिष्ट सेल स्थिति पर एक चित्र Excel में डालें jQuery क्रॉस डोमेन आईफ़्रेम स्क्रिप्टिंग PHP विंडोज़ मशीन पर एसएसएच 2 स्थापित करें क्यों एक बंद टैग न आना होगा? रीफ़्रेश एक्सेल VBA फंक्शन परिणाम

डेमन थ्रेड स्पष्टीकरण

पायथन दस्तावेज़ में यह कहते हैं:

एक थ्रेड को "डेमन थ्रेड" के रूप में फ्लैग किया जा सकता है इस ध्वज का महत्व यह है कि पूरे पायथन कार्यक्रम से बाहर निकलता है जब केवल डेमन थ्रेड छोड़ दिए जाते हैं। प्रारंभिक मान को थ्रेड बनाने से विरासत में मिला है।

क्या किसी के पास स्पष्ट अर्थ है कि इसका मतलब क्या है या व्यावहारिक उदाहरण क्या दिखाता है कि आप थ्रेड को daemonic रूप में कैसे सेट करना चाहते हैं?


मेरे लिए स्पष्ट करने के लिए:

तो क्या आप थ्रेड को केवल डेमॉनिक के रूप में सेट नहीं करेंगे, यदि आप चाहते हैं कि वे मुख्य धागा निकास के बाद चलते रहें?

वेब के समाधान से एकत्रित समाधान "डेमन थ्रेड स्पष्टीकरण"

कुछ थ्रेड्स पृष्ठभूमि कार्यों को करते हैं, जैसे कि पैलेट पैकेट भेजने या समय-समय पर कचरा संग्रहण, या जो कुछ भी यह केवल तब उपयोगी होता है जब मुख्य प्रोग्राम चल रहा है, और अन्य, गैर-डेमन, धागे से बाहर निकल जाने के बाद उन्हें मारना ठीक है।

डेमॉन धागे के बिना, आपको उनका ट्रैक रखना होगा, और उन्हें बाहर निकलने के लिए कहें, इससे पहले कि आपका कार्यक्रम पूरी तरह से बाहर निकल सके उन्हें डेमन धागे के रूप में सेट करके, आप उन्हें चलाने और भूल सकते हैं, और जब आपका कार्यक्रम समाप्त हो जाता है, तो कोई भी डेमॉन थ्रेड स्वचालित रूप से मार डाला जाता है

मान लीजिए कि आप किसी प्रकार का डैशबोर्ड विजेट बना रहे हैं। इस के हिस्से के रूप में, आप चाहते हैं कि यह आपके ईमेल बॉक्स में अपठित संदेश गिनता प्रदर्शित करे। तो आप एक छोटा धागा बनायेंगे जो:

  1. मेल सर्वर से कनेक्ट करें और पूछें कि आपके पास कितने अपठित संदेश हैं।
  2. अपडेट किए गए गिनती के साथ जीयूआई सिग्नल करें
  3. थोड़ी देर के लिए सो जाओ

जब आपका विजेट शुरू होता है, तो यह यह धागा बनायेगा, इसे एक डेमन नामित करेगा, और इसे शुरू करें क्योंकि यह एक डेमॉन है, आपको इसके बारे में सोचना नहीं है; जब आपका विजेट निकलता है, धागा स्वचालित रूप से बंद हो जाएगा।

इसके बारे में सोचने के लिए एक आसान तरीका, शायद: जब मुख्य रिटर्न, तब भी आपकी प्रक्रिया समाप्त नहीं होगी, अगर अभी भी चलने वाले गैर-डेमन थ्रेड नहीं हैं

थोड़ी सलाह: यदि थ्रेड्स और सिंक्रनाइज़ेशन शामिल होते हैं तो क्लीन शटडाउन गलत हो जाना आसान है – यदि आप इसे से बच सकते हैं, तो ऐसा करें। जब भी संभव हो तो डेमन थ्रेड का उपयोग करें

अन्य पोस्टर ने उन परिस्थितियों के लिए कुछ उदाहरण दिए जिनमें आप डेमन थ्रेड्स का उपयोग कर रहे थे। मेरी सिफारिश, हालांकि, उनका उपयोग कभी नहीं करना है।

ऐसा इसलिए नहीं है क्योंकि वे उपयोगी नहीं हैं, लेकिन क्योंकि आप उन कुछ बुरा दुष्प्रभावों का अनुभव कर सकते हैं जो आप उनका उपयोग करते हैं। पायथन रनटाइम मुख्य थ्रेड में चीजों को फाड़ना शुरू करने के बाद डेमन थ्रेड्स अभी भी निष्पादित कर सकते हैं, जिससे कुछ बहुत ही विचित्र अपवाद हो सकते हैं।

यहां अधिक जानकारी:

http://joeshaw.org/2009/02/24/605

http://mail.python.org/pipermail/python-list/2005-February/307042.html

कड़ाई से बोलते हुए आपको कभी उनकी ज़रूरत नहीं होती, कुछ मामलों में यह कार्यान्वयन आसान बनाता है

क्रिस ने पहले ही समझाया कि डेमन धागे क्या हैं, तो चलो व्यावहारिक उपयोग के बारे में बात करते हैं। कई धागा पूल कार्यान्वयन कार्य श्रमिकों के लिए डेमन धागे का उपयोग करते हैं। कार्यकर्ता थ्रेड्स हैं जो कार्य कतार से कार्य निष्पादित करते हैं।

कार्यकर्ता को कार्य कतार में कार्य के लिए अनिश्चित काल तक प्रतीक्षा करना जरूरी है क्योंकि उन्हें नहीं पता कि नया कार्य कब दिखाई देगा। थ्रेड जो कार्य सौंपा (मुख्य थ्रेड) केवल तब जानता है जब कार्य खत्म हो गया है मुख्य धागा रिक्त पाने के लिए कार्य कतार पर प्रतीक्षा करता है और फिर बाहर निकलता है। यदि श्रमिक उपयोगकर्ता थ्रेड्स हैं जैसे कि गैर-डेमन, प्रोग्राम समाप्त नहीं होगा। यह अनिश्चित काल तक चलने वाले श्रमिकों के लिए इंतजार कर रहा है, भले ही मजदूर उपयोगी कुछ नहीं कर रहे हैं श्रमिकों के डेमॉन थ्रेड्स को चिह्नित करें, और मुख्य थ्रेड उनको मारने का ध्यान रखेगा जैसे ही यह कार्य को संभालने का काम करता है

क्रिस का हवाला देते हुए: "… जब आपका कार्यक्रम समाप्त हो जाता है, तो कोई भी डेमॉन सूत्र स्वचालित रूप से मार डाला जाता है।" मुझे लगता है कि यह बताता है ऊपर जब आप उनका उपयोग करते समय सावधान रहना चाहिए, जब वे पूरा होने पर मुख्य प्रोग्राम निष्पादित करते हैं, तब अचानक ही समाप्त हो जाते हैं।