프로그래밍/Python

[python] Tread, Multithreading 개념 정리

니니는 진짜 전설이다 2024. 4. 17. 10:05

 

 

 

파이썬에서 Tread 와 Multithreading은 중요한 개념으로, 동시에 여러 작업을 수행해야할 때 사용됩니다. 

이번 글에서는 이러한 개념들을 간단히 설명하고, 파이썬에서 어떻게 사용되는지 알아보겠습니다.

 

 

 

 

 

 

🪡Thread란?

Tread는 운영체제가 프로그램의 실행 단위로 관리하는 작은 단위입니다. 일반적으로 프로세스라는 큰 실행 단위 안에 여러개의 스레드가 존재할 수 있으며, 각 스레드는 프로세스 내의 자원을 공유하면서 동시에 실행될 수 있습니다. 스레드는 각각 독립적인 실행 흐름을 가지며, 이를 통해 멀티태스킹을 구현할 수 있습니다.

 

 

🧶Multithreading이란?

Multithreading은 하나의 프로세스 안에서 여러 스레드를 동시에 실행하는 기술입니다. 이를 통해 다수의 작업을 병렬로 처리할 수 있으며, 이로 인해 프로그램의 실행 효율을 대폭 향상시킬 수 있습니다. 파이썬에서는 threading모듈을 통해 멀티스레딩을 쉽게 구현할 수 있습니다.

 

 

 

병렬로 처리되는 모습

 

 

 


 

 

 

📝파이썬에서의 Multithreading 사용법

파이썬에서 멀티 스레딩을 사용하기 위한 기본적인 방법입니다. 

1. threading모듈 임포트

import threading

 

2. 스레드가 실행할 함수 정의 

def print_numbers():
    for i in range(1, 11):
        print(i)

 

3. Thread 객체 생성 및 시작 

thread = threading.Thread(target=print_numbers)
thread.start()

 

4. 스레드의 실행이 끝날 때 까지 기다리기 

thread.join()

 

 

 

예제: 간단한 멀티스레딩 프로그램 

import threading
import time

def print_numbers():
    for i in range(1, 6):
        print(i)
        time.sleep(1)  # 1초 대기

# 스레드 두 개 생성
thread1 = threading.Thread(target=print_numbers)
thread2 = threading.Thread(target=print_numbers)

# 스레드 시작
thread1.start()
thread2.start()

# 스레드가 종료될 때까지 기다림
thread1.join()
thread2.join()

 

 

 

✔️주의 사항 

GIL(Global Interpreter Lock): 

 파이썬의 CPython 구현은 GIL이라는 매커니즘을 사용하여, 한 시점에 하나의 스레드만이 파이썬 코드를 실행할 수 있도록 제한합니다. 이는 CPU를 많이 사용하는 작업에서 멀티스레딩의 효율을 제한할 수  있습니다. (GIL정책 때문에 파이썬은 싱글스레드 언어로 불림) 

 

스레드안정성 (Thread Safty): 

 여러 스레드가 데이터를 공유할 경우, 동시에 데이터를 수정하려 할 때 문제가 발생할 수 있습니다. 이를 방지하기 위해 lock, Semaphore등의 동기화 기술을 사용해야 합니다.