# 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 등을 사용하여 데이터 접근을 제어해야 합니다. * 데몬 스레드: 데몬 스레드는 메인 스레드가 종료될 때 강제로 종료될 수 있으므로 주의해야 합니다.