PYTHON · 함수
코루틴 제너레이터
제너레이터 기반 코루틴으로 협력적 멀티태스킹을 구현합니다. async/await의 기반이 되는 개념입니다.
함수고급coroutine코루틴scheduler제너레이터
핵심 설명
제너레이터 기반 코루틴으로 협력적 멀티태스킹을 구현합니다. async/await의 기반이 되는 개념입니다.
Python code
# 간단한 태스크 스케줄러
from collections import deque
def task_a():
for i in range(3):
print(f" Task A: 단계 {i}")
yield
def task_b():
for i in range(5):
print(f" Task B: 단계 {i}")
yield
def scheduler(tasks):
queue = deque(tasks)
while queue:
task = queue.popleft()
try:
next(task)
queue.append(task)
except StopIteration:
print(f" 태스크 완료")
print("=== 코루틴 스케줄러 ===")
scheduler([task_a(), task_b()])
# 파이프라인 코루틴
def coroutine(func):
def wrapper(*args, **kwargs):
gen = func(*args, **kwargs)
next(gen)
return gen
return wrapper
@coroutine
def printer():
while True:
line = yield
print(f"출력: {line}")
p = printer()
p.send("Hello")
p.send("World")학습 팁
현대 Python에서는 제너레이터 코루틴 대신 async/await를 사용하세요. 이 패턴은 원리 이해를 위해 유용합니다.
주의할 점
제너레이터 코루틴과 async 코루틴을 혼합하면 예상치 못한 동작이 발생합니다. 하나의 패러다임을 일관되게 사용하세요.
자주 묻는 질문
코루틴 제너레이터란 무엇인가요?
제너레이터 기반 코루틴으로 협력적 멀티태스킹을 구현합니다. async/await의 기반이 되는 개념입니다.
코루틴 제너레이터 학습 시 주의할 점은 무엇인가요?
제너레이터 코루틴과 async 코루틴을 혼합하면 예상치 못한 동작이 발생합니다. 하나의 패러다임을 일관되게 사용하세요.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.