반응형
비동기 프로그래밍 요약 노트
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())
반응형
'개발 이야기 > 파이썬' 카테고리의 다른 글
[Python 실전 튜토리얼!] PDF 파일 이미지로 변환하는 윈도우 프로그램 직접 만들기 (0) | 2024.07.30 |
---|---|
[파이썬] 제너레이터를 활용한 효율적인 텍스트 처리 방법 (0) | 2024.04.15 |
[Python] 우선순위 큐(Priority Queue) 활용법 - heapq 모듈과 예제 코드 살펴보기 (0) | 2024.04.15 |
[Python] No module named 'pip' 고치기 (0) | 2023.12.29 |
맥북에서 Ubuntu로 외부에서 원격접속해서 VS CODE로 코딩하는 방법. (0) | 2023.07.23 |
댓글