2011-10-18 15 views
7

मैं निम्न श्रेणी को बेहतर तरीके से कैसे लिख सकता हूं? उदाहरण के लिए क्या दो झंडे को झुकाव करने का एक अच्छा तरीका is_alive है और is_finished है?python3 में थ्रेड रोकना

Monitor(threading.Thread): 
    def run(self): 
     resource = Resource("com1") 

     self.alive = True 
     self.is_finished = False 
     try: 
      while self.alive: 
       pass # use resource 
     finally: 
      resource.close() 
      self.is_finished = True  

    def stop(self): 
     self.alive = False 
     while not self.is_finished: 
      time.sleep(0.1) 

उत्तर

8

यह काफी है। हालांकि, अगर आप is_finished जरूरत नहीं है, क्योंकि आप join() विधि का उपयोग कर सकते हैं:

Monitor(threading.Thread): 
    def run(self): 
     resource = Resource("com1") 

     self.alive = True 
     try: 
      while self.alive: 
       pass # use resource 
     finally: 
      resource.close() 

    def stop(self): 
     self.alive = False 
     self.join() 

आप अगर एक धागा चल रहा है खोजने की जरूरत है है, तो आप mythread.is_alive() कॉल कर सकते हैं - आप इस सेट करने के लिए की जरूरत नहीं है स्वयं।

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