[python] 파이썬 스레드간 통신 방법
파이썬에서 멀티스레드를 사용하여 병렬로 작업을 수행할 때, 스레드들 간에 데이터를 효과적으로 공유하고 통신해야 합니다. 이를 위해서 여러 가지 방법을 사용할 수 있으며, 이 글에서는 가장 흔하게 사용되는 큐(Queues)를 통한 통신 방법에 대해 살펴보겠습니다.
1. 큐(Queues)를 이용한 통신
파이썬의 queue
모듈을 사용하면 스레드 간 안전하게 데이터를 전달할 수 있습니다. 큐는 스레드 간 데이터 공유를 위해 설계된 자료 구조로, 스레드 간 안전한 통신을 지원합니다.
아래는 queue
모듈을 사용하여 스레드 간에 데이터를 주고받는 간단한 예시 코드입니다.
import queue
import threading
def worker(q):
while True:
item = q.get()
if item is None:
break
# 데이터 처리 로직
print(f'Processed: {item}')
q.task_done()
q = queue.Queue()
t = threading.Thread(target=worker, args=(q,))
t.start()
for item in range(10):
q.put(item)
# 모든 작업이 완료될 때까지 대기
q.join()
# 스레드 종료
q.put(None)
t.join()
위 코드에서 queue.Queue
를 사용하여 데이터를 스레드 간에 안전하게 전달하고 있습니다. put
메서드로 큐에 데이터를 넣고, get
메서드로 데이터를 빼오는 방식으로 스레드 간 효율적인 통신이 이루어집니다.
결론
파이썬에서 멀티스레드 간에 데이터를 안전하게 주고받기 위해서는 queue
모듈을 사용하여 큐를 구성하는 방법을 익히는 것이 중요합니다. 이를 통해 스레드 간 안전한 통신 및 데이터 공유를 구현할 수 있습니다.
관련 자료
- 파이썬 공식 문서: queue 모듈
- Real Python: 파이썬에서 멀티스레딩 사용하기