FE PARADISE

[Python] Threads 본문

카테고리 없음

[Python] Threads

PARADISE247 2026. 9. 24. 19:10
반응형

Thread 스레드

하나의 실행 흐름을 의미한다. 

print("Hello")
print("World")
print("Hehe")

이 코드를 실행하면 순서대로 

"Hello"
"World"
"Hehe"

문자열이 출력된다. 

여기서 Thread를 추가하면 여러 작업을 각각 다른 Thread에서 실행할 수 있다. 


import threading

def work():
	print("Working")
    
thread = threading.Thread(target=work)
thread.start()

이 코드를 살펴보면

thread = threading.Thread(target=work)

work 함수를 실행할 스레드를 생성했다. 

이후

thread.start()

해당 코드 호출로 Thread가 실행된다.

 

thread.start()

thread.run()

이때 start와 run의 차이에 유의해야한다. 

start : 새로운 스레드를 생성하여 target함수 실행

run: 현재 스레드에서 target함수 실행

 

import threading
import time

def work(name):
    for i in range(3):
        print(name, i)
        time.sleep(1)

thread1 = threading.Thread(target=work, args=("A",))
thread2 = threading.Thread(target=work, args=("B",))

thread1.start()
thread2.start()

위 코드를 실행하면 다음과 같이 두 스레드가 번갈아가며 실행될 수 있다. 

A 0
B 0
A 1
B 1
A 2
B 2

만약 스레드를 사용하지 않았다면

A 0
A 1
A 2
B 0
B 1
B 2

이와 같이 한 작업이 종료된 이후 다음 작업이 진행된다.


join()

thread1.start()
thread2.start()

thread1.join()
thread2.join()

print("모든 작업 완료")

스레드 사용 시 많이 쓰는 join은 해당 Thread가 끝날 때까지 기다려라 를 의미한다. 

join을 사용하지 않으면 '모든 작업 완료' 문자열이 모든 스레드 작업이 끝나기도 전에 먼저 출력될 것이다.

반응형