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

您可以將daemon設置爲True

進程的守護進程標誌,一個布爾值。在調用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)