Qthread 이해하기

사우나도깨비·2025년 10월 18일

개발공부

목록 보기
3/10

지난 openAI로 번역기 만들기 실습에서도 Qthread를 이용했었는데,
추가 실습을 진행하며 Qthread의 기능에 대해 추가 정리를 진행해보겠습니다.

Qthread란?

스레드란?

프로그램 내에서 동시에 일을 처리 할수 있도록 역할 가져옴

기본적으론 프로그램은 시작점을 찾아서 코드의 위->아래로 읽어 내려오며 파일을 실행함.
이때 시간 지연이나 에러가 발생하면 코드가 그 즉시 . 멈춰버린다


이는 마치 프린터 작업창과 비슷한데,
여러 작업물이 프린터 작업창에 걸려 있어도, 맨 앞 작업물이
오류를 발생시키면 따라오는 모든 작업물이 모두 프린트가 되지 않는다.


그래서 마치 전기신호의 병렬 연결처럼, 이를 개선해
작업자를 나눠 동시에 시행하는 개념이 "스레드"인 것이다.

Qthread

현재 쓰고 있는 QT 라이브러리에서 스레드를 사용하는 방법이다.
QT에서 스레드를 사용하는 방법은 2가지이다.

  1. Qthread 직접 상속받기
  2. QObject를 상속Worker 객체를 생성후, Qthread로 옮기기

Qthread 직접 상속받기

class ImageWorker(QThread):
    finished = pyqtSignal(str)
    error = pyqtSignal(Exception)

Qthread를 직접 상속받은 워커 클래스를 만들 수도 있고 돌아간다.
하지만 스레드 관리와, 작업 수행을 나누는 것이 권장된다.

QObject.moveToThread

class ImageWorker(QObject):
    finished = pyqtSignal(str)
    error = pyqtSignal(str)
self.image_thread = QThread()
        self.image_worker = ImageWorker(self.client, prompt)
        self.image_worker.moveToThread(self.image_thread)

권장되는 방식은 worker클래스로 Qobject를 상속하고,
worker클래스를 thread에 연결되도록 만드는 것이다.

0개의 댓글