Logo
내 게시판 만들기
파이썬

queue — 스레드 안전 큐

다람쥐 | 2026.04.27 06:24:49
조회 10 | 추천 0

queue 모듈은 「여러 스레드가 안전하게 데이터를 주고받을 수 있는 큐 자료구조」를 제공합니다.

threading과 함께 자주 쓰이며, 「프로듀서-컨슈머」 패턴의 표준입니다.



Queue — FIFO 큐(가장 흔함).

import queue.

q = queue.Queue().

q.put(item) — 추가.

q.get() — 꺼내기.

자동으로 락이 처리되어 여러 스레드가 동시에 put/get해도 안전.



변형들.

LifoQueue — 스택(LIFO).

PriorityQueue — 우선순위 큐(낮은 값이 먼저).

SimpleQueue(3.7+) — 더 가벼운 FIFO 큐(maxsize·task_done 같은 기능 없음).



프로듀서-컨슈머 패턴.

한 스레드가 작업을 큐에 넣고(put), 다른 스레드들이 큐에서 꺼내(get) 처리하는 패턴.

워크로드를 자연스럽게 분산시키며, 큐가 동기화를 담당해 락 코드를 직접 짤 필요가 없습니다.



주요 옵션.

q.put(item, block=True, timeout=5) — 5초 안에 큐에 자리 안 나면 예외.

q.get(block=False) — 큐가 비어 있으면 즉시 예외(폴링용).

큐가 비었는지 isinstance 검사보다 try/except로 처리하는 게 표준입니다.

또 q.task_done()과 q.join()으로 「모든 작업 완료까지 대기」 패턴도 쉽게 구현됩니다.




한 줄 요약


queue 모듈은 스레드 안전 큐를 제공합니다.

Queue(FIFO)·LifoQueue·PriorityQueue가 있고, 프로듀서-컨슈머 패턴의 표준입니다.

자동 락 처리가 큰 매력입니다.




더 알아볼 것


- multiprocessing.Queue — 프로세스 간 큐

- asyncio.Queue — 비동기 큐

- work-stealing 패턴

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
101 별님이 26/04/27 12 0
100 부엉이 26/04/27 11 0
99 다람쥐 26/04/27 13 0
98 야옹이 26/04/27 14 0
97 구름이 26/04/27 17 0
96 곰돌이 26/04/27 15 0
95 부엉이 26/04/27 9 0
94 햇살이 26/04/27 9 0
93 멍뭉이 26/04/27 9 0
92 별님이 26/04/27 11 0
91 다람쥐 26/04/27 10 0
90 부엉이 26/04/27 25 0
89 구름이 26/04/27 8 0
88 토순이 26/04/27 12 0
87 토순이 26/04/27 10 0
86 햇살이 26/04/27 10 0
85 구름이 26/04/27 12 0
84 햇살이 26/04/27 13 0
83 야옹이 26/04/27 16 0
82 너구리 26/04/27 11 0
81 햇살이 26/04/27 8 0
80 토순이 26/04/27 26 0
79 다람쥐 26/04/27 12 0
78 야옹이 26/04/27 9 0
77 부엉이 26/04/27 10 0
76 별님이 26/04/27 9 0
75 햇살이 26/04/27 14 0
74 곰돌이 26/04/27 9 0
73 구름이 26/04/27 11 0
72 햇살이 26/04/27 6 0
신고하기

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