Как обновлять GUI в многопоточном приложении?

Пытаюсь написать программу с multiprocessing и PyQt5. Процессы запускаются и работают, а окно приложения никак не реагирует. Не обновляются данные в окне. Также не работает кнопка выхода. Окно тупо повисает. Как можно обновить в нем данные, например вывести счетчик процессов? И сделать выход или паузу по кнопке.

  class mywindow(QtWidgets.QMainWindow):
        def __init__(self):
            super(mywindow, self).__init__()
            self.ui = Ui_MainWindow()
            self.ui.setupUi(self)
            self.ui.pushButton.clicked.connect(self.btnClicked)
            self.ui.pushButton_2.clicked.connect(self.btn2Clicked)

        def btn2Clicked(self):
            sys.exit(app.exec()) # <=== Это не работает

        def btnClicked(self):

            with urllib.request.urlopen(url) as f:
                proxy = f.read().decode('utf-8')
                f.close()
                proxy = json.loads(proxy)
                proxy = proxy['data']
                for i in proxy:
                    print(i['proxy'])
                    proxy_list.append(i)

            proxy_list_len = len(proxy_list)
            print(proxy_list_len)
            cnt = 0
            threads = 300

            with Manager() as manager:
                bad_proxy_list = manager.list()
                good_proxy_list = manager.list()
                processes = []
                while cnt < proxy_list_len:
                    for i in range(threads):
                        p = Process(target=multi, args=(proxy_list[cnt], good_proxy_list, bad_proxy_list))
                        p.start()
                        processes.append(p)
                        cnt += 1
                        if cnt >= proxy_list_len:
                            break
                        print(cnt)
                    for p in processes:
                        print(p)
                        p.join()
                    self.ui.label_2.setText(str(cnt)) # <=== Это не работает

Ответы (0 шт):