一、QThread
1、继承QObject
# -*- coding: utf-8 -*- from PyQt5.QtCore import * class MyWorker(QObject): def __init__(self): super(MyWorker, self).__init__() def doWork(self): # do something pass if __name__ == '__main__': t = QThread() w = MyWorker() w.moveToThread(t) t.start()
2、继承QThread
# -*- coding: utf-8 -*- from PyQt5.QtCore import * class MyThread(QThread): def __init__(self): super(MyThread, self).__init__() def run(self): # do something pass if __name__ == '__main__': t = MyThread() t.start()
二、QRunnable
# -*- coding: utf-8 -*- from PyQt5.QtCore import * class MyTask(QRunnable): def __init__(self): super(MyTask, self).__init__() def run(self): # do something pass if __name__ == '__main__': t = MyTask() pool = QThreadPool.globalInstance() pool.start(t)
三、QtConcurrent
本处详细查看《QtConcurrent详解》
def fun(param): # do something pass if __name__ == '__main__': p1 = '..' p2 = '?' pool = QThreadPool() f1 = QtConcurrent.run( &pool, fun, p1) f2 = QtConcurrent.run( &pool, fun, p2) f1.waitForFinished() f2.waitForFinished()
参考资料:
【1】《QThread使用》
【2】《PyQt线程笔记》