FrameWork/PyQT

QThread을 사용하여 작업 단위 분리하기

JHeaon 2023. 8. 19. 04:05

스레드

프로그램이 메모리에 올라가서 실행중인 것을 프로세스라고 부르는데, 이 프로세스의 실행 단위를 스레드라고 한다. 프로세스는 최소 하나 이상의 스레드를 갖으며 경우에 따라 여러 스레드를 가질 수 있다. PyQT에서는 이를 QThread 클래스를 상속받은Worker 클래스를 통해 처리하는 편이다. 아래는 QThread의 예제이다. 

 

 🖥️ main.py

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *


class Worker(QThread):
    def run(self):
        while True:
            print("안녕하세요")
            self.sleep(1)


class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.worker = Worker()
        self.worker.start()


app = QApplication(sys.argv)
mywindow = MyWindow()
mywindow.show()
app.exec_()

 

코드를 보자면, 생성자에서 self.worker로 Worker() 인스턴스를 만든뒤 start()함수를 통해 해당 스레드를 실행시킨다. 이때 스레드에서 하는 행위는 QThread을 상속받은 Worker클래스 안의 run() 함수에 따라 결정된다. 

 

추가적으로 스레드끼리의 값 전달, 컨트롤 하는 방법도 있으니 아래 글을 참고 하자. 


참조 : https://wikidocs.net/71014

 

05) 멀티스레딩

[TOC] ## 스레드란 여러분이 사용하는 PC에는 윈도우, macOS, 리눅스와 같은 운영체제가 설치되어 있습니다. 운영체제는 컴퓨터를 전체적으로 관리하는 매니저 역할을 …

wikidocs.net

 

'FrameWork/PyQT'의 다른글

  • 현재글 QThread을 사용하여 작업 단위 분리하기

관련글