python实现多线程及线程间通信的简单方法
方法
利用PyQt中的QThread类实现多线程利用,PyQt中的pyqtSignal类实现信息的触发和捕获,即定义事件和订阅事件
利用QThread类实现多线程的方法
1,新建一个python类,继承自QThread
from PyQt5.QtCore import QThread class SubThread(QThread):
2,重写__init__(),__del__()和run()函数
from PyQt5.QtCore import QThread
class SubThread(QThread):
def __init__(self):
super().__init__()
# 以下加入需要的代码
def __del__(self):
self.wait()
def run(self):
# 以下加入子线程执行的代码3,将继承自QThread类实例化,然后调用实例对象的start()函数,即可开启新线程
【重点说明】
QThread的子类的实例,必须放在app = QtWidgets.QApplication(sys.argv)和sys.exit(app.exec_())代码之间。
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
subthread = SubThread()
subthread.start()
sys.exit(app.exec_())利用pyqtSignal类实现信息触发和捕获的方法
1,在类内头部定义pyqtSignal属性,记住,是类级别属性
from PyQt5.QtCore import QThread, pyqtSignal
class SubThread(QThread):
messagetrigger = pyqtSignal(str)
def __init__(self):
super().__init__()
# 以下加入需要的代码
def __del__(self):
self.wait()
def run(self):
# 以下加入子线程执行的代码2,在需要触发信息的地方使用,调用pyqtSignal的emit()函数触发消息
import timefrom PyQt5.QtCore
import QThread, pyqtSignal, QObject
class SubThread(QThread):
messagetrigger = pyqtSignal(str)
def __init__(self):
super().__init__()
def __del__(self):
self.wait()
def run(self):
self.messagetrigger.emit('子线程开始')
time.sleep(2)
self.messagetrigger.emit('子线程结束')3,捕获消息,使用pyqtSignal的connect()连接回调函数,在回调函数内处理捕获到的信息,完整代码如下:
import sysimport timefrom PyQt5.QtCore
import QThread, pyqtSignal, QObject
from PyQt5 import QtWidgets
class SubThread(QThread):
messagetrigger = pyqtSignal(str)
def __init__(self):
super().__init__()
def __del__(self):
self.wait()
def run(self):
self.messagetrigger.emit('子线程开始')
time.sleep(2)
self.messagetrigger.emit('子线程结束')
def callback(msg):
print(msg)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
subthread = SubThread()
subthread.messagetrigger.connect(callback)
subthread.start()
sys.exit(app.exec_())以上就是python实现多线程及线程间通信的简单方法的详细内容,更多关于python多线程线程间通信的资料请关注脚本之家其它相关文章!
相关文章
python错误提示:Errno 2] No such file or directory的解决方法
我相信很多人在学习Python的时候,特别是在open文件的时候总还碰到,还报错IOError:[Errno 2]没有这样的文件或目录:'E://aaa.txt',这篇文章主要给大家介绍了关于python错误提示:Errno 2] No such file or directory的解决方法,需要的朋友可以参考下2022-02-02


最新评论