关闭PYQT MainFrame时如何关闭多处理

时间:2017-10-17 07:52:18

标签: python multiprocessing

我有一个PYSide2主机,当按下按钮我创建一个进程名称TTT, 我认为当我关闭大型机时,过程也会关闭,但事实并非如此。

我该怎么办?

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

1 个答案:

答案 0 :(得分: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)