2011-10-18 15 views
7

次のクラスはどうやって書くのがいいですか?たとえば、is_aliveとis_finishedの2つのフラグを持つことができます。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

これはかなりです。あなたはこれを設定する必要はありません - あなたは、スレッドが実行されている場合、あなたはmythread.is_alive()を呼び出すことができます見つけるために必要がある場合

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

:あなたはjoin()メソッドを使用することができますので、しかし、あなたは、is_finishedを必要としませんあなた自身。

関連する問題