PYTHON · 비동기
비동기 제너레이터
async for와 비동기 제너레이터로 비동기 스트림 데이터를 처리합니다.
비동기고급async generator비동기 제너레이터async for
핵심 설명
async for와 비동기 제너레이터로 비동기 스트림 데이터를 처리합니다.
Python code
import asyncio
async def async_range(start: int, stop: int, delay: float = 0.1):
"""비동기 제너레이터"""
for i in range(start, stop):
await asyncio.sleep(delay)
yield i
async def countdown(name: str, n: int):
async for i in async_range(0, n, 0.2):
print(f" {name}: {n - i}")
print(f" {name}: 완료!")
async def main():
# 비동기 컴프리헨션
squares = [x ** 2 async for x in async_range(1, 6)]
print(f"비동기 제곱: {squares}")
# 비동기 필터링
evens = [x async for x in async_range(1, 11) if x % 2 == 0]
print(f"짝수: {evens}")
# 여러 비동기 스트림 동시 처리
await asyncio.gather(
countdown("A", 3),
countdown("B", 5),
)
asyncio.run(main())학습 팁
비동기 제너레이터는 웹소켓 메시지, SSE(Server-Sent Events), 실시간 로그 처리에 적합합니다.
주의할 점
비동기 제너레이터를 일반 for 루프로 순회하면 TypeError가 발생합니다. 반드시 async for를 사용하세요.
자주 묻는 질문
비동기 제너레이터란 무엇인가요?
async for 와 비동기 제너레이터로 비동기 스트림 데이터를 처리합니다.
비동기 제너레이터 학습 시 주의할 점은 무엇인가요?
비동기 제너레이터를 일반 for 루프로 순회하면 TypeError 가 발생합니다. 반드시 async for 를 사용하세요.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.