PyQt多线程使用

最近在做一个系统。对代码进行主线程和子线程的分离,将比较耗时的数据处理操作放在子线程里面操作,防止卡死。由于最后系统使用的环境很杂,pyqt5版本过高,在一些xp的低版本操作系统是运行会出问题,所以使用的pyqt4,但原理一样。
原理参考博文最后链接,这里记录自己的使用方法

比如,在通过实现制作TFrecords文件,并记录文件照片数量。这里有循环读取的耗时操作。利用多线程实现如下:

步骤:

1.创建线程类

from PyQt4 import QtCore
from PyQt4.QtCore import pyqtSignal


class WorkThread(QtCore.QThread):#定义一个工作线程,后面会调用和重写
    # 使用信号和UI主线程通讯,参数是发送信号时附带参数的数据类型,可以是str、int、list等
    finishSignal = pyqtSignal(int)

    def run(self):#线程启动后会自动执行,这里是逻辑实现的代码
        self.finishSignal.emit(int) #发射信号

WorkThread是创建的一个线程类,后面会重写他的run方法
实现制作数据集的操作:

class dealThread(WorkThread): #1.制作数据集
    finishSignal = pyqtSignal(int,int)

    # 带3个参数
    def __init__(self,dataset_param,total_label,tf_record):
        super(dealThread, self).__init__()

        self.datasetparam_ui = dataset_param
        self.totalnum_label = total_label
        self.Tfrecord_ui = tf_record

    #处理逻辑业务
    def run(self):
        try:
            if self.datasetparam_ui.tfrecordstart_radioButton.isChecked():# Tfrecord文件
                saveTfrecord_path = self.datasetparam_ui.datasetsavepath_label.text()  # 保存路径
                ftrecordfilename = ("train.tfrecords")  # tfrecords格式文件名

                # 通过这一句将数据写入到TFRecord文件,参数为TFrecord的文件路径,入口
                writer = tf.io.TFRecordWriter(saveTfrecord_path + "\\" + ftrecordfilename)

                # 标签
                with open(self.datasetparam_ui.csvlabel_label.text(), 'r') as ff:
                    reader = csv.reader(ff)
                    images_list = []
                    labels = []
                    for row in reader:
                        images_list.append(row[0])
                        labels.append(row[1])
                ff.close()

                lines = 1
                bad = 0
          
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值