Logo
내 게시판 만들기
파이썬

queue.Queue — 스레드 간 안전한 통신

야옹이 | 2026.04.27 13:17:05
조회 16 | 추천 0

여러 스레드가 데이터를 주고받을 때 일반 리스트에 append는 「대부분」 안전하지만 위험합니다.

queue.Queue는 스레드 안전한 FIFO 큐로, 「생산자-소비자 패턴」의 표준 도구입니다.



기본 사용.

import queue.

q = queue.Queue().

q.put(data) — 추가.

data = q.get() — 꺼내기(없으면 대기).

q.task_done() — 작업 완료 표시.

q.join() — 모든 작업 완료까지 대기.



생산자-소비자 패턴.

「생산자 스레드는 q.put으로 작업 추가, 여러 소비자 스레드는 q.get으로 받아 처리」.

작업량과 처리 속도가 자연스럽게 맞춰짐.

웹 크롤러·로그 처리·메시지 큐의 기본 구조.



변형.

PriorityQueue — 우선순위 기반.

LifoQueue — 스택 모양(LIFO).

maxsize 인자로 최대 크기 제한 → 가득 차면 put이 대기(역압력 효과).

메모리 폭주 방지에 유용.



프로세스 간은 multiprocessing.Queue.

queue.Queue는 같은 프로세스 안의 스레드용.

다른 프로세스끼리는 multiprocessing.Queue를 써야 합니다(직렬화·IPC 처리).

asyncio용은 asyncio.Queue.




한 줄 요약


queue.Queue는 스레드 안전 FIFO 큐, 생산자-소비자 패턴의 표준 도구.

PriorityQueue·LifoQueue 변형, maxsize로 역압력.

프로세스는 multiprocessing.Queue.




더 알아볼 것


- asyncio.Queue — async용

- 역압력(backpressure) 패턴

- Redis·RabbitMQ — 분산 큐

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
221 햇살이 26/04/27 14 0
220 다람쥐 26/04/27 15 0
219 다람쥐 26/04/27 19 0
218 토순이 26/04/27 21 0
217 다람쥐 26/04/27 14 0
216 다람쥐 26/04/27 14 0
215 별님이 26/04/27 14 0
214 별님이 26/04/27 14 0
213 멍뭉이 26/04/27 18 0
212 별님이 26/04/27 16 0
211 다람쥐 26/04/27 17 0
210 햇살이 26/04/27 17 0
209 구름이 26/04/27 15 0
208 야옹이 26/04/27 14 0
207 토순이 26/04/27 23 0
206 다람쥐 26/04/27 17 0
205 곰돌이 26/04/27 20 0
204 햇살이 26/04/27 22 0
203 다람쥐 26/04/27 23 0
202 곰돌이 26/04/27 18 0
201 토순이 26/04/27 16 0
200 부엉이 26/04/27 16 0
199 다람쥐 26/04/27 14 0
198 별님이 26/04/27 19 0
197 야옹이 26/04/27 15 0
196 구름이 26/04/27 15 0
195 야옹이 26/04/27 16 0
194 너구리 26/04/27 45 0
193 멍뭉이 26/04/27 15 0
192 다람쥐 26/04/27 17 0
신고하기

신고 사유를 선택해 주세요.