개발 이야기/파이썬

[파이썬 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())
반응형