
asyncio 뽀개기 2 - Future의 활용
두줄요약
asyncio Future의 완료 콜백과 직접 발행 방식을 설명했습니다. busy waiting 없이 Future 기반 Semaphore를 구현하는 흐름을 다뤘습니다.
구조와 흐름
- Future를 비동기 연산의 미래 결과를 담고 완료 상태를 제어하는 awaitable 객체로 설명
asyncio.create_task()로 생성한 Future에 완료 콜백을 등록해 작업 시간·결과·예외 관찰- Semaphore 대기열에 Future를 발행하고
release()에서set_result()로 대기 작업 재개
선택 이유
- 작업 본문과 모니터링 로직 분리를 통한 단일 책임 유지
- polling 기반 busy waiting 제거와 Eventloop 오버헤드·재개 지연 감소
Queue,gather,as_completed,Semaphore등 asyncio 유틸의 Future 기반 이해
주의할 점
asyncio.Future와concurrent.futures.Future의 비호환성, 필요 시asyncio.wrap_future()사용- 콜백 실행 시점·순서의 명세상 미보장, 순서 보장 필요 시 별도 제어 장치 필요
- Future 직접 생성보다 Eventloop 최적화 구현체를 고려한
loop.create_future()사용

