2011-10-18 16 views
7

Aşağıdaki sınıfı nasıl yazabilirim? Örneğin iki bayrak is_alive ve is_finished sahip kayma için iyi bir yolu var mı?Python3'te iş parçacığının bırakılması

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) 

cevap

8

Bu oldukça fazla. Eğer join() yöntemini kullanabilirsiniz çünkü Ancak, is_finished gerekmez: Bir iş parçacığı çalışıp çalışmadığını bulmalıyız yoksa

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() 

, sen mythread.is_alive() çağırabilir - Bunu ayarlamak gerekmez kendin.

İlgili konular