多线程处理框架

该代码实现了一个基于 PyQt6 的多线程处理框架。主要包含两个类:WorkerSignals 和 Worker。WorkerSignals 类定义了线程工作时使用的各种信号,而 Worker 类继承自 QRunnable,用于处理多线程任务的设置、执行和信号传递。

功能介绍

该代码实现了一个基于 PyQt6 的多线程处理框架。主要包含两个类:WorkerSignalsWorkerWorkerSignals 类定义了线程工作时使用的各种信号,而 Worker 类继承自 QRunnable,用于处理多线程任务的设置、执行和信号传递。

代码结构

  • 导入必要的模块和库
  • 定义类 WorkerSignals
  • 定义类 Worker

类:WorkerSignals

简短功能介绍

WorkerSignals 类定义了可从正在运行的工作线程发出的信号。这些信号用于指示线程的各种状态和进度,包括完成、错误、结果和进度更新。

属性

  • finished:无数据的信号,指示线程已完成。
  • error:包含异常类型、值和追溯信息的元组信号。
  • result:处理结果数据的信号。
  • progress:指示进度的整数信号。
  • terminate:终止信号。
  • start:启动信号。
  • publish:发布信号。
  • runDone:运行完成信号。
  • logging:日志信号,包含日志信息字符串。
  • clear:清除信号。

类:Worker

简短功能介绍

Worker 类继承自 QRunnable,用于处理工作线程的设置、信号和结束。它允许在独立线程中运行指定的函数,并通过信号机制与主线程通信。

方法:__init__

功能:初始化 Worker 对象,存储传递的函数及其参数,并设置信号。

参数

  • fn:要在工作线程中运行的函数。
  • args:传递给函数的参数。
  • kwargs:传递给函数的关键字参数。

主要步骤

  1. 调用父类 QRunnable 的构造函数。
  2. 存储传递的函数及其参数。
  3. 初始化 WorkerSignals 对象。
  4. 将进度回调添加到关键字参数中。

方法:run

功能:初始化传递的函数并执行它,处理可能的异常,并通过信号机制传递结果。

主要步骤

  1. 尝试运行传递的函数,并捕获其结果。
  2. 如果发生异常,捕获异常信息并发出 error 信号。
  3. 如果函数运行成功,发出 result 信号传递结果。
  4. 最后,无论是否发生异常,发出 finished 信号指示完成。