2017-10-17 1 views
0

PYSide2 메인 프레임이 있고 단추를 클릭하면 프로세스 이름 TTT가 생성됩니다. 메인 프레임을 닫으면 프로세스가 닫히지 만 그렇지 않은 것 같습니다.PYQT MainFrame을 닫을 때 다중 처리를 닫는 방법

어떻게해야합니까?

class Test7(QMainWindow): 

    def __init__(self): 
     QMainWindow.__init__(self) 
     self.setupUi() 

    def setupUi(self): 
     ...(not important code here)... 
     self.pushButton.clicked.connect(self.btnClicked) 


    def btnClicked(self): 
     ttt = TTT('aaa') 
     ttt.deman = False 
     ttt.start() 


class TTT(multiprocessing.Process): 
    def __init__(self, name): 
     multiprocessing.Process.__init__(self) 
     print('nothing to do') 

    def run(self): 
     while True: 
      print('abc') 
      time.sleep(10) 

if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    w = Test7() 
    w.show() 
    sys.exit(app.exec_()) 

답변

0

당신은 Truedaemon을 설정할 수 있습니다.

프로세스의 데몬 플래그, 부울 값. start()가 호출되기 전에이 값을 으로 설정해야합니다.

초기 값은 생성 프로세스에서 상속됩니다.

프로세스가 종료되면 모든 데몬 프로세스 하위 프로세스가 종료됩니다.

데몬 프로세스는 하위 프로세스를 만들 수 없습니다. 그렇지 않으면 상위 프로세스가 종료 될 때 이 종료되면 데몬 프로세스가 자식을 고아가됩니다. 또한, 이들은 유닉스 데몬이나 서비스가 아니며, 데몬 프로세스가 종료되지 않은 경우 이 종료되는 (결합되지 않은) 일반 프로세스입니다.

예로 들어 당신의 조각을 가지고 :

class TTT(multiprocessing.Process): 
    def __init__(self, name): 
     multiprocessing.Process.__init__(self) 
     self.daemon = True 
     print('nothing to do') 

    def run(self): 
     while True: 
      print('abc') 
      time.sleep(10) 
관련 문제