python實現(xiàn)多線程及線程間通信的簡單方法
方法
利用PyQt中的QThread類實現(xiàn)多線程利用,PyQt中的pyqtSignal類實現(xiàn)信息的觸發(fā)和捕獲,即定義事件和訂閱事件
利用QThread類實現(xiàn)多線程的方法
1,新建一個python類,繼承自QThread
from PyQt5.QtCore import QThread class SubThread(QThread):
2,重寫__init__(),__del__()和run()函數(shù)
from PyQt5.QtCore import QThread
class SubThread(QThread):
def __init__(self):
super().__init__()
# 以下加入需要的代碼
def __del__(self):
self.wait()
def run(self):
# 以下加入子線程執(zhí)行的代碼3,將繼承自QThread類實例化,然后調用實例對象的start()函數(shù),即可開啟新線程
【重點說明】
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類實現(xiàn)信息觸發(fā)和捕獲的方法
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):
# 以下加入子線程執(zhí)行的代碼2,在需要觸發(fā)信息的地方使用,調用pyqtSignal的emit()函數(shù)觸發(fā)消息
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()連接回調函數(shù),在回調函數(shù)內處理捕獲到的信息,完整代碼如下:
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實現(xiàn)多線程及線程間通信的簡單方法的詳細內容,更多關于python多線程線程間通信的資料請關注腳本之家其它相關文章!
相關文章
Python通過字典映射函數(shù)實現(xiàn)switch
這篇文章主要介紹了Python通過字典映射函數(shù)實現(xiàn)switch,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11
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
Python基于Socket實現(xiàn)簡易多人聊天室的示例代碼
這篇文章主要介紹了Python基于Socket實現(xiàn)簡易多人聊天室的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11

