Files
python-examples/doc/18_threading.md
2025-01-23 11:02:27 +09:00

32 lines
2.0 KiB
Markdown

# threading 모듈: 동시 작업의 시작
threading 모듈은 파이썬에서 여러 작업을 동시에 실행하기 위한 도구입니다. 마치 여러 사람이 동시에 다른 일을 하는 것처럼, 파이썬 프로그램 내에서도 여러 작업을 동시에 처리할 수 있도록 해줍니다. 이를 통해 프로그램의 실행 속도를 향상시키고, I/O 작업과 같은 블로킹 작업을 효율적으로 처리할 수 있습니다.
* 스레드 생성: Thread 클래스를 사용하여 새로운 스레드를 생성합니다.
* 스레드 실행: start() 메서드를 호출하여 스레드를 실행합니다.
* 스레드 동기화: Lock, RLock, Condition, Event 등의 클래스를 사용하여 스레드 간의 동기화를 수행합니다.
* 데몬 스레드: 메인 스레드가 종료되면 자동으로 종료되는 스레드를 생성할 수 있습니다.
```python
import threading
import time
def worker(num):
print(f"Worker {num} starting...")
time.sleep(2)
print(f"Worker {num} finished.")
threads = []
for i in range(5):
t = threading.Thread(target=worker, args=(i,))
threads.append(t)
t.start()
for t in threads:
t.join()
```
위 예시는 5개의 스레드를 생성하여 각 스레드에서 worker 함수를 실행하는 코드입니다. 각 스레드는 2초 동안 실행되며, 모든 스레드가 종료될 때까지 메인 스레드가 기다립니다.
## 주의 사항
* Global Interpreter Lock (GIL): 파이썬의 GIL은 한 번에 하나의 스레드만 실행되도록 제한합니다. 따라서 CPU-bound 작업(연산 집약적인 작업)의 경우 스레드를 사용해도 성능 향상이 제한적일 수 있습니다.
* 동기화 문제: 여러 스레드가 공유하는 데이터에 접근할 때는 동기화 문제가 발생할 수 있습니다. Lock이나 RLock 등을 사용하여 데이터 접근을 제어해야 합니다.
* 데몬 스레드: 데몬 스레드는 메인 스레드가 종료될 때 강제로 종료될 수 있으므로 주의해야 합니다.