2017-10-17 17 views
0

J'ai un macroordinateur PYSide2, et quand je clique sur le bouton je crée un nom de processus TTT, Je pense que quand je ferme le mainframe, le processus se ferme aussi, mais ce n'est pas le cas.Comment fermer le multiprocesseur quand je ferme le PYQT MainFrame

Comment faire?

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

Répondre

0

Vous pouvez définir daemon-True.

Le drapeau démon du processus, une valeur booléenne. Cela doit être défini avant que start() soit appelé.

La valeur initiale est héritée du processus de création. Lorsqu'un processus se termine, il tente de mettre fin à tous ses processus enfants démoniques.

Notez qu'un processus démon n'est pas autorisé à créer des processus enfants. Sinon un processus démoniaque laisserait ses enfants orphelins si se termine lorsque son processus parent se termine. De plus, ce sont des démons et services non-Unix, ce sont des processus normaux qui seront terminés (et non joints) si des processus non-démon- tiques se sont terminés.

Prenez votre extrait comme exemple:

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)