내가

2016-06-20 5 views
1

는 실행 방법을 가지고 실행 방법 내부 무한 루프가있는 경우 QThread을 종료하는 방법 :내가

def run(self): 
    while True: 
     new_value = self.client.read_holding_registers(self.reg_num, 1, unit=self.slave_id).registers[0] 
     if new_value != self.value: 
      self.value = new_value 
      self.data_changed.emit(
       {"id": "{0};{1};{2};{3}".format(self.host, self.port, self.slave_id, self.reg_num), 
       "value": self.value}) 
      self.usleep(100) 

그래서 내가 연결에서 다가오는 데이터를 잡을 필요가있다. 그리고이 루프를 깨뜨릴 조건이 없습니다 (연결이 끊어진 경우에만). 그래서 어떻게 내 스레드에서 종료해야합니까?

답변

0

daemon은 무엇인지 잘 알고 있습니까? 전체 응용 프로그램이 중단되었을 때 스레드가 항상 실행되고 종료되도록하려면 데몬이되어야합니다.

+0

답변 해 주셔서 감사합니다. 내 스레드 시작 및 중지 제어 할 싶습니다. 무한대로 실행하기 위해이 스레드를 100 개 생성하려면 어떤 기술을 사용해야합니까? –

+0

언제 중단하고 싶습니까? 한 번에 하나씩 수동으로 선택하고 중지 하시겠습니까? 데몬 접근법은 주 함수에서 100 개를 스폰하고 응용 프로그램을 닫을 때 자동으로 모든 데몬 스레드를 닫을 수 있기 때문에 제안했습니다. – limbo

+0

인터페이스 버튼 (시작/중지)에서 중지하고 싶습니다. 예, 한 번에 하나씩 선택하고 중지하고 싶습니다. 하지만 데이터에 인터페이스로 전송할 신호를 낼 수 없다는 데몬에 문제가 있다고 생각합니다. 또는 알 수 있듯이 QObject를 상속받은 클래스에서만 신호를 생성 할 수 있습니다. 그래서 나는 [link] (https://pypi.python.org/pypi/daemons)와 QObject에서 run.Daemon을 상속받는 클래스를 생성해야합니까? –