개발 이야기/파이썬
[파이썬 async] 비동기 프로그래밍 요약 노트
AI 동키
2024. 4. 24. 13:06
반응형
비동기 프로그래밍 요약 노트
1. 비동기 프로그래밍의 목적
- 성능 향상 및 자원 활용 최적화.
- I/O 바운드 작업(네트워크 요청, 파일 입출력 등)에서 대기 시간 동안 다른 작업을 수행.
- 사용자 경험 개선과 서비스의 확장성 증대.
2. 주요 구성 요소
- Event Loop: 비동기 작업을 관리하고 실행 순서를 제어하는 핵심 메커니즘.
- Coroutine: async def로 정의된 비동기 함수. await을 사용하여 비동기 실행을 기다림.
- Task: 코루틴을 래핑하고, 실행을 관리하는 객체. 여러 비동기 작업을 동시에 실행할 수 있게 함.
- Future: 미래에 완료될 비동기 작업의 결과를 나타내는 객체. 작업의 완료를 기다리고 결과를 검색.
3. 비동기 작업 실행
- Async/Await: 비동기 함수 내에서 다른 비동기 함수나 작업의 완료를 기다릴 때 사용.
- asyncio.gather(): 여러 코루틴이나 태스크를 동시에 실행하고, 모두 완료될 때까지 기다리는 함수.
4. 동기화 및 예외 처리
- 동기화 도구: Lock, Event, Semaphore, Condition 등을 사용하여 동시 접근과 경쟁 상태를 관리.
- 예외 처리: 코루틴 내에서 try...except 블록을 사용하여 예외를 적절히 처리.
5. 응용 분야
- 웹 서버: 동시 다수 사용자 요청 처리.
- 데이터 처리: 대용량 데이터 I/O 관리.
- 실시간 데이터 피드: 스트리밍 데이터 실시간 처리 및 업데이트.
6. 예제
import asyncio
async def fetch_data():
print("Fetching data...")
await asyncio.sleep(2) # 데이터 요청 대기 시뮬레이션
return "Data received"
async def main():
data = await fetch_data()
print(data)
asyncio.run(main())
반응형