from PyQt5 import QtCore import sys class SomeObject(QtCore.QObject): finished = QtCore.pyqtSignal() def longRunning(self): for i in range(3): print("ping %d" % i) self.finished.emit() app = QtCore.QCoreApplication([]) objThread = QtCore.QThread() obj = SomeObject() obj.moveToThread(objThread) obj.finished.connect(objThread.quit) objThread.started.connect(obj.longRunning) objThread.finished.connect(app.exit) objThread.start() sys.exit(app.exec_())