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 OpenCV Canny边缘检测算法的原理实现详解

    Python OpenCV Canny边缘检测算法的原理实现详解

    这篇文章主要介绍了Python OpenCV Canny边缘检测算法的原理实现详解,由于边缘检测对噪声敏感,因此对图像应用高斯平滑以帮助减少噪声,具体详情需要的小伙伴可以参考一下
    2022-07-07
  • Python进阶之迭代器与迭代器切片教程

    Python进阶之迭代器与迭代器切片教程

    迭代器是 Python 中独特的一种高级特性,而切片也是一种高级特性,两者相结合,会产生什么样的结果呢,需要的朋友可以参考下
    2020-01-01
  • python安装gdal的两种方法

    python安装gdal的两种方法

    这篇文章主要介绍了python安装gdal的两种方法,每种方法给大家介绍的都非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Python-Tkinter Text输入内容在界面显示的实例

    Python-Tkinter Text输入内容在界面显示的实例

    今天小编就为大家分享一篇Python-Tkinter Text输入内容在界面显示的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Pytorch中的数据集划分&正则化方法

    Pytorch中的数据集划分&正则化方法

    这篇文章主要介绍了Pytorch中的数据集划分&正则化方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Python中使用hashlib模块处理算法的教程

    Python中使用hashlib模块处理算法的教程

    这篇文章主要介绍了Python中使用hashlib模块处理算法的教程,代码基于Python2.x版本,需要的朋友可以参考下
    2015-04-04
  • 重构Python代码的六个实例

    重构Python代码的六个实例

    这篇文章主要给大家介绍了关于重构Python代码的六个实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python搭建NLP模型的详细步骤

    Python搭建NLP模型的详细步骤

    文章提供了一套从零到一实现中文情感分析模型微调的完整教程,使用HuggingFaceTransformers库,推荐pipeline零代码快速上手,然后进行模型的完整微调和部署,需要的朋友可以参考下
    2026-02-02
  • Python HTTP库 requests 的简单使用详情

    Python HTTP库 requests 的简单使用详情

    requests是Python的一个HTTP客户端库,基于urllib标准库,在urllib标准库的基础上做了高度封装,因此更加简洁好用,下面就由小编来给大家详细介绍吧,需要的朋友可以参考下
    2021-09-09
  • Python async+request与async+aiohttp实现异步网络请求探索

    Python async+request与async+aiohttp实现异步网络请求探索

    这篇文章主要介绍了Python async+request与async+aiohttp实现异步网络请求探索,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10

最新评论