3 동시성 모델 — asyncio 가 I/O 의 현대 디폴트
Python 의 셋 — asyncio (단일 스레드 협력 동시성), threading (여러 스레드, GIL 이 CPU 병렬성 제한), multiprocessing (여러 프로세스, 진짜 병렬성). I/O 바운드 작업 — 네트워크, 파일시스템, 안 그러면 기다릴 모든 곳 — 엔 asyncio 가 현대 디폴트. cwkPippa 가 위에서 아래까지 asyncio.
async def 와 await
async def f(): 가 *coroutine* 정의. 호출해도 본문 안 돌아 — coroutine 객체 반환. await coro 가 다음 일시정지 또는 완료까지 coroutine 실행. await 키워드가 마법 — 이벤트 루프한테 "여기 기다리는 동안 다른 거 돌려도 돼".
asyncio.run — 진입점
asyncio.run(main()) 이 이벤트 루프 생성, coroutine 이 반환할 때까지 실행, 그 다음 루프 종료. 일반 Python 스크립트에서 async 프로그램 시작하는 방법. async 함수 안에선 asyncio.run 호출 X — 그냥 await.
Task — coroutine 동시 실행
await coro 가 *한* coroutine 기다림. 여러 개 동시 실행하려면 각각 asyncio.create_task(coro) 로 Task 에 감싸. await asyncio.gather(*tasks) 가 다 기다림. asyncio.TaskGroup (3.11+) 이 현대 모양 — 적절한 예외 처리 가진 블록 scope task 관리.