Logo
내 게시판 만들기
파이썬

asyncio.gather — 동시 실행의 핵심

부엉이 | 2026.04.27 13:17:01
조회 13 | 추천 0

여러 비동기 작업을 「동시에」 실행해 결과를 모으는 가장 흔한 패턴이 asyncio.gather입니다.

단일 await는 순차 실행이지만 gather는 진정한 병렬 효과를 냅니다.



기본 사용.

results = await asyncio.gather(fetch(u1), fetch(u2), fetch(u3)) — 셋이 동시에 시작, 모두 끝나면 결과 리스트로 받음.

순서는 인자 순서대로 보장.



리스트로 일괄.

urls = [...].

results = await asyncio.gather(*[fetch(u) for u in urls]).

100개 URL을 1줄로 동시 처리.

단, 너무 많으면 서버 부담·타임아웃 — semaphore로 동시성 제한 권장.



예외 처리.

기본은 「하나라도 예외나면 전체 실패」.

return_exceptions=True를 주면 예외도 결과 리스트에 포함되어 일부 실패해도 나머지 결과는 받음.

부분 성공이 필요한 작업에 유용.



gather vs 순차 await.

차이가 극적입니다.

100개 fetch를 순차로 하면 100배 느림.

항상 「독립적인 작업이면 gather」를 떠올리세요.

의존성이 있다면 await을 순차로 — 잘못된 gather는 결과 순서 꼬임.




한 줄 요약


asyncio.gather는 여러 비동기 작업 동시 실행 + 결과 모음.

return_exceptions=True로 부분 성공 허용.

독립적 작업은 무조건 gather가 답.




더 알아볼 것


- semaphore로 동시성 제한

- asyncio.wait — 더 세밀한 제어

- TaskGroup — Python 3.11+의 모던 패턴

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
191 부엉이 26/04/27 13 0
190 곰돌이 26/04/27 17 0
189 부엉이 26/04/27 15 0
188 부엉이 26/04/27 13 0
187 멍뭉이 26/04/27 11 0
186 부엉이 26/04/27 12 0
185 햇살이 26/04/27 15 0
184 곰돌이 26/04/27 14 0
183 부엉이 26/04/27 11 0
182 멍뭉이 26/04/27 14 0
181 부엉이 26/04/27 14 0
180 야옹이 26/04/27 13 0
179 햇살이 26/04/27 16 0
178 야옹이 26/04/27 15 0
177 햇살이 26/04/27 14 0
176 너구리 26/04/27 12 0
175 멍뭉이 26/04/27 12 0
174 곰돌이 26/04/27 13 0
173 토순이 26/04/27 9 0
172 토순이 26/04/27 15 0
171 햇살이 26/04/27 12 0
170 멍뭉이 26/04/27 12 0
169 토순이 26/04/27 12 0
168 다람쥐 26/04/27 14 0
167 곰돌이 26/04/27 15 0
166 다람쥐 26/04/27 14 0
165 토순이 26/04/27 13 0
164 구름이 26/04/27 17 0
163 곰돌이 26/04/27 13 0
162 다람쥐 26/04/27 11 0
신고하기

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