2009-09-11 11 views
9

के रूप में सेट करता हूं तो इससे क्या फर्क पड़ता है जब मैं thread.setDaemon(True) का उपयोग करते हुए एक पाइथन थ्रेड को डिमन के रूप में सेट करता हूं तो क्या अंतर होता है?जब मैं पाइथन थ्रेड को डेमॉन

उत्तर

19

एक डेमन थ्रेड एप्लिकेशन को बाहर निकलने से नहीं रोकेगा। कार्यक्रम समाप्त होता है जब सभी गैर-डिमन धागे (मुख्य धागे शामिल) पूर्ण होते हैं।

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

उदाहरण के लिए, यदि आप एक जीयूआई आवेदन लिख रहे हैं और उपयोगकर्ता मुख्य विंडो बंद कर देता है, तो प्रोग्राम छोड़ना चाहिए। लेकिन अगर आपके पास चारों ओर लटकने वाले गैर-डिमन थ्रेड हैं, तो यह नहीं होगा।

डॉक्स से: http://docs.python.org/library/threading.html#threading.Thread.daemon

इसकी प्रारंभिक मूल्य बनाने धागा से विरासत में मिली है; मुख्य धागा एक डेमॉन थ्रेड नहीं है और इसलिए मुख्य धागे में डिफॉल्ट = False में बनाए गए सभी थ्रेड हैं।

पूरे पायथन प्रोग्राम से बाहर निकलता है जब कोई जीवित गैर-डिमन थ्रेड शेष नहीं होता है।

+1

ठीक है। अब मुझे डेमन धागे के बारे में स्पष्ट विचार है। धन्यवाद दोस्त! –

+1

तो जब आप एप्लिकेशन बंद करते हैं तो डेमन थ्रेड के साथ क्या होता है? –

+1

@ प्रोग्राम से निकलने पर मेटामो डिमन थ्रेड मारे जाते हैं। –

संबंधित मुद्दे