python实现多线程及线程间通信的简单方法

 更新时间:2023年07月21日 09:30:43   作者:大眼睛编程  
这篇文章主要为大家介绍了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通过字典映射函数实现switch

    Python通过字典映射函数实现switch

    这篇文章主要介绍了Python通过字典映射函数实现switch,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Python playwright学习之自动录制生成脚本

    Python playwright学习之自动录制生成脚本

    playwright 可以支持自动录制生成脚本,也就是说只需要在页面上点点点,就可以自动生成对应的脚本了。本文就来和大家详细聊聊实现方法吧
    2023-02-02
  • Python判断直线和矩形是否相交的方法

    Python判断直线和矩形是否相交的方法

    这篇文章主要介绍了Python判断直线和矩形是否相交的方法,涉及Python坐标系下的直线与矩形相关运算,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • python错误提示:Errno 2] No such file or directory的解决方法

    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
  • Python3 读、写Excel文件的操作方法

    Python3 读、写Excel文件的操作方法

    这篇文章主要介绍了Python3 读、写Excel文件的操作方法,需要的朋友可以参考下
    2018-10-10
  • Python基于Socket实现简易多人聊天室的示例代码

    Python基于Socket实现简易多人聊天室的示例代码

    这篇文章主要介绍了Python基于Socket实现简易多人聊天室的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python源码解析之List

    Python源码解析之List

    今天带大家来复习Python底层代码LIST,文中有非常详细的介绍及代码示例,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • Python爬虫小练习之爬取并分析腾讯视频m3u8格式

    Python爬虫小练习之爬取并分析腾讯视频m3u8格式

    读万卷书不如行万里路,学的扎不扎实要通过实战才能看出来,本篇文章手把手带你爬下腾讯视频的m3u8格式来分析,大家可以在过程中查缺补漏,看看自己掌握程度怎么样
    2021-10-10
  • Python实现队列的方法

    Python实现队列的方法

    这篇文章主要介绍了Python实现队列的方法,实例分析了Python实现队列的相关技巧,需要的朋友可以参考下
    2015-05-05
  • 一文带你了解Python中Scikit-learn库的使用

    一文带你了解Python中Scikit-learn库的使用

    Scikit-learn是Python的一个开源机器学习库,它支持监督和无监督学习,本文主要来深入探讨一下Scikit-learn的更高级的特性,感兴趣的小伙伴可以了解下
    2023-07-07

最新评论