비동기 프로그래밍 소개
비동기 프로그래밍 소개
🎯 이 lesson 을 읽고 나면
이 lesson 을 다 읽고 나면 아래 3가지를 자신 있게 할 수 있습니다.
- ▸✅ Python 이 왜 AI/데이터 표준 언어가 됐는지
- ▸✅ Python 3.x 기준 venv + requirements.txt 셋업
- ▸✅ print / input / type / dir 4개 내장 함수
학습 목표를 체크리스트로 두고 다 답할 수 있게 되면 lesson 을 닫으세요.
async/await — 코드 + 실행 결과
async def + await = 여러 작업 동시 처리 (단일 스레드, IO 대기 효율). HTTP·DB 호출에 표준.
1. 동기 vs 비동기 — 시간 차이
2. 핵심 키워드
3. HTTP 호출 (실무)
4. 흔한 실수
한 줄 요약
async def + await + asyncio.gather() — IO 대기 많은 곳 (HTTP·DB) 에서 N배 빨라짐.
💡 핵심 포인트
1. async def: 코루틴 함수 정의
2. await: 코루틴 실행 대기
3. asyncio.run(): 이벤트 루프 실행
⚠️ asyncio.run() 주의사항: 이미 실행 중인 이벤트 루프(Jupyter Notebook, FastAPI 내부 등) 안에서 asyncio.run()을 호출하면 RuntimeError가 발생합니다. 그런 환경에서는 await 코루틴을 직접 사용하거나, nest_asyncio 라이브러리를 활용하세요.
Python의 비동기 프로그래밍은 asyncio 라이브러리로 구현합니다. async def로 코루틴 함수 정의, await로 비동기 작업을 기다립니다. asyncio.gather()로 여러 코루틴을 동시 실행합니다. I/O 바운드 작업(HTTP, DB, 파일)에 효과적이며, CPU 바운드는 multiprocessing을 사용하세요. aiohttp, httpx는 비동기 HTTP 클라이언트 라이브러리입니다.
🐍 실행해보기 — 비동기 프로그래밍 소개
🤖 AI 에게 이렇게 요청해보세요
이 lesson 의 개념을 알면 AI 에게 구체적으로 지시할 수 있습니다. 막연한 "고쳐줘" 가 아니라 어휘를 가진 요청 — 그게 토큰 절약의 출발점입니다.
- ▸"이 동기 requests 호출들을 asyncio + httpx 로 병렬화해줘"
- ▸"이 async 코드의 예외 처리 (asyncio.gather return_exceptions) 추가해줘"
왜 이게 토큰을 줄이나
개념을 모를 땐 AI 답변을 받고도 "그게 뭐예요?" 를 다시 물어야 합니다. 그 "다시 물음" 이 토큰을 잡아먹습니다. 개념 한 번 익혀두면 대화가 한 번에 끝납니다.