비동기 문법 (syntax)
async def
- 비동기 함수(코루틴)을 정의하는 문법
- 호출 시 즉시 실행이 아닌 → 코루틴 객체 반환
await - 현재 코루틴을 중단하고
- 이벤트 루프에 제어권 반환
- 다른 task 실행 가능
async with - 비동기 컨텍스트 매니저 문법
- 자원 획득 / 해제를 await 포함해서 안전하게 처리
비동기 실행 모델 (Execution Model)
asyncio
- python 비동기 표준 라이브러리
- 역할
- 이벤트 루프 제공
- task 스케쥴링
- await 지점에서 task 전환
asyncio.run(main())병렬 실행 단위
Task/Coroutine
- async def 호출 결과
- 실행 전 상태의 작업 단위 task = work(1)
*tasks
- task 리스트를 개별 인자로 풀어서 전달함
tasks = [work(1), work(2)]
await asyncio.gather (*tasks)
# 사실상 work(1), work(2)를 풀어서 넣는 것과 동일함동시성 제어 도구 (슬롯 개수 제한)
Semaphore
- 동시 실행 가능한 슬롯 개수 제한
- worker 개념 아님
- 자리(slot) 개념
자리 있으면 실행 없으면 대기 끝나면 자리 반납