Logo
내 게시판 만들기
파이썬

concurrent.futures — 통합 인터페이스

멍뭉이 | 2026.04.27 13:17:04
조회 16 | 추천 0

threading과 multiprocessing은 인터페이스가 다르고 약간 번거롭습니다.

concurrent.futures가 「ThreadPoolExecutor·ProcessPoolExecutor」로 둘을 통일된 API로 제공해 훨씬 쓰기 편합니다.



ThreadPoolExecutor.

from concurrent.futures import ThreadPoolExecutor.

with ThreadPoolExecutor(max_workers=10) as ex: results = list(ex.map(fetch, urls)).

10개 스레드가 100개 URL 분담 — IO 바운드에 적합.



ProcessPoolExecutor.

with ProcessPoolExecutor(max_workers=4) as ex: results = list(ex.map(heavy_compute, data)).

4개 프로세스로 CPU 바운드 작업 병렬.

인터페이스가 같아서 Thread → Process 교체가 한 줄.



submit과 Future.

future = ex.submit(func, arg).

즉시 시작 + Future 객체 반환.

나중에 future.result()로 결과 수령.

as_completed(futures)로 「끝난 순서대로」 처리도 가능.



선택.

IO 바운드 → ThreadPoolExecutor(또는 더 모던하게 asyncio).

CPU 바운드 → ProcessPoolExecutor.

학습 비용 낮고 효과 크니 「병렬」이 떠오르면 일단 concurrent.futures를 첫 후보로.




한 줄 요약


concurrent.futures는 Thread·Process Pool을 통일된 API로 제공.

ex.map이 표준, submit·as_completed로 더 세밀한 제어.

학습 쉽고 효과 큰 첫 선택지.




더 알아볼 것


- map vs submit 차이

- ThreadPool vs asyncio 선택

- Pool 크기 결정 — IO는 크게, CPU는 코어 수

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
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 16 0
192 다람쥐 26/04/27 17 0
신고하기

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