PHpullh
학습 라이브러리/Python/코루틴 제너레이터

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 메타데이터를 가집니다.