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实现汉诺塔方法汇总

    python实现汉诺塔方法汇总

    本文给大家汇总了几种使用Python结合递归算法实现汉诺塔的方法,非常的简单实用,对大家学习Python很有帮助,希望大家能够喜欢
    2016-07-07
  • python数据分析实战指南之异常值处理

    python数据分析实战指南之异常值处理

    数据预处理是明确分析目标与思路之后进行数据分析的第一步,也是整个项目中最基础、花费时间较长的工作,下面这篇文章主要给大家介绍了关于python数据分析实战指南之异常值处理的相关资料,需要的朋友可以参考下
    2022-01-01
  • 基于Python实现千图成像工具的示例代码

    基于Python实现千图成像工具的示例代码

    千图成像也就是用N张图片组成一张图片的效果。这篇文章将利用Python语言编写一个简单的千图成像工具,感兴趣的小伙伴可以了解一下
    2022-07-07
  • 如何在Python中导入EXCEL数据

    如何在Python中导入EXCEL数据

    这篇文章主要介绍了使用Python处理EXCEL基础操作篇1,如何在Python中导入EXCEL数据,文中提供了解决思路和部分实现代码,一起来看看吧
    2023-03-03
  • Python将内容进行base64编码与解码实现

    Python将内容进行base64编码与解码实现

    本文主要介绍了Python将内容进行base64编码与解码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python实现求解最大公约数的五种方法总结

    Python实现求解最大公约数的五种方法总结

    求最大公约数是习题中比较常见的类型,本文小编将给大家提供五种比较常见的算法,都是用Python语言实现的,感兴趣的小伙伴可以了解一下
    2022-07-07
  • pytorch实现多项式回归

    pytorch实现多项式回归

    这篇文章主要为大家详细介绍了pytorch实现多项式回归,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • Python实战练习之终于对肯德基下手

    Python实战练习之终于对肯德基下手

    读万卷书不如行万里路,学的扎不扎实要通过实战才能看出来,本篇文章手把手带你爬下肯德基的官网,大家可以在过程中查缺补漏,看看自己掌握程度怎么样
    2021-10-10
  • pycharm远程调试openstack的图文教程

    pycharm远程调试openstack的图文教程

    这篇文章主要为大家详细介绍了pycharm远程调试openstack的图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • python如何获取当前系统的日期

    python如何获取当前系统的日期

    这篇文章主要介绍了python如何获取当前系统的日期,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05

最新评论