До этого обычно использовал наследование QThread и переопределение метода run(), что-то похожее описано в этой теме. Соответственно, как реализовать описанное выше не очень понятно. Пока додумался только до вот такого: создание объекта и потока при каждом нажатии на кнопку
self.thread = QThread() self.worker = MyWorker() self.worker.moveToThread(self.thread) self.worker.setData(arg1, agr2) # передаём данные self.thread.started.connect(self.worker.processData) self.worker.updateProgress.connect(self.showProgress) self.worker.finished.connect(self.logMessage) self.worker.finished.connect(self.thread.quit) self.worker.finished.connect(self.worker.deleteLater) self.thread.finished.connect(self.thread.deleteLater) self.thread.start()