本文主要是介绍python的threading和Pyqt的QThread,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
python_线程
我们可以通过直接从 threading.Thread 继承创建一个新的子类,并实例化后调用 start() 方法启动新线程,即它调用了线程的 run() 方法:
常用方法 | |
---|---|
run() | 用以表示线程活动的方法。 |
start() | 启动线程活动。 |
join([time]) | 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。 |
isAlive() | 返回线程是否活动的。 |
getName() | 返回线程名。 |
setName() | 设置线程名。 |
示例代码
#!/usr/bin/python3import threading
import timeexitFlag = 0# 创建线程类继承threading.Thread
class myThread (threading.Thread):# 线程 构造函数def __init__(self, threadID, name, delay):threading.Thread.__init__(self)self.threadID = threadIDself.name = nameself.delay = delay# 线程运行函数def run(self):print ("开始线程:" + self.name)print_time(self.name, self.delay, 5)print ("退出线程:" + self.name)def print_time(threadName, delay, counter):while counter:if exitFlag:threadName.exit()time.sleep(delay)print ("%s: %s" % (threadName, time.ctime(time.time())))counter -= 1# 创建新线程
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)# 开启新线程
thread1.start()
thread2.start()
#等待至线程中止
thread1.join()
thread2.join()
print ("退出主线程")
QThread 线程
常用方法 | |
---|---|
start() | 启动线程 |
wait() | 阻止线程,直到满足如下条件之一 |
(1)与此QThread对象关联的线程已完成执行(即从run返回时),如果线程完成执行,此函数返回True,如果线程尚未启动,也返回True | |
(2)等待时间的单位是毫秒,如果时间是ULONG_MAX(默认值·),则等待,永远不会超时(线程必须从run返回),如果等待超时,此函数将会返回False | |
sleep() | 强制当前线程睡眠多少秒 |
常用信号 | |
---|---|
started | 在开始执行run函数之前,从相关线程发射此信号 |
finished | 当程序完成业务逻辑时,从相关线程发射此信号 |
示例代码
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import socket
import time
import sys
sys.path.append(".")class my_QThread(QThread):# 线程初始化def __init__(self):self.running = Truesuper().__init__()# 线程释放def __del__(self):# 线程状态改变与线程终止self.running = True# 线程运行def run(self):while self.running:print("循环任务正在执行...")# 线程休眠,必须加否则阻塞其他线程time.sleep(0.001)# 停止def stop(self):self.running = Falsedef main():app = QApplication(sys.argv)# 线程实例化my_QThread_test = my_QThread()# 启动线程my_QThread_test.start()app.exit(app.exec_())# if __name__ == "__main__":main()
这篇关于python的threading和Pyqt的QThread的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!