[python] Tread, Multithreading 개념 정리
파이썬에서 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등의 동기화 기술을 사용해야 합니다.