2017-10-17 39 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

daemonTrueと設定できます。

プロセスのデーモンフラグで、ブール値です。これは、start()が呼び出される前に に設定する必要があります。

初期値は、作成プロセスから継承されます。

プロセスが終了すると、すべてのデーモン 子プロセスが終了しようとします。

デーモンプロセスでは、子プロセスを作成できないことに注意してください。 それ以外の場合、親プロセスが終了したときに が終了すると、デーモンプロセスは子プロセスを終了します。さらに、これらは であり、Unixデーモンやサービスではありません。デーモン以外のプロセスが終了した場合は、 が終了します(そして結合されない)通常のプロセスです。

は、一例として、あなたのスニペットを取る:

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) 
関連する問題