2010-10-23 14 views
5

को thread.start_new_thread (...) अनुवाद ``:नई सूत्रण एपीआई

thread.start_new_thread(main_func, args, kwargs) 

लेकिन अगर मैं नई threading एपीआई प्रक्रिया का उपयोग करने का प्रयास करें

threading.Thread(target=main_func, args=args, kwargs=kwargs).start() 

कैसे मैं नए सूत्रण एपीआई के कोड अनुवाद कर सकते हैं: है, जो धागा लटका हुआ है जब यह sys.exit(3) साथ ही बाहर निकलने चाहिए चलाता है?

आप इस उदाहरण को context में देख सकते हैं।

उत्तर

7

यह व्यवहार तथ्य यह है कि thread.start_new_thread जबकि threading.Threadnon-daemon मोड में धागा बनाता daemon मोड में धागा बनाता है के कारण है।

my_thread = threading.Thread(target=main_func, args=args, kwargs=kwargs) 
my_thread.setDaemon(True) 
my_thread.start() 
:
डेमॉन मोड में threading.Thread शुरू करने के लिए, आप .setDaemon विधि का उपयोग करने की आवश्यकता है
2

जब सभी गैर-डिमन धागे निकल जाएंगे तो प्रोग्राम बाहर निकल जाएगा। आप अपने daemon संपत्ति को True पर सेट करके अपना माध्यमिक Thread डिमनिक बना सकते हैं।

वैकल्पिक रूप से आप sys.exit पर os._exit के साथ अपनी कॉल को प्रतिस्थापित कर सकते हैं।

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