>  기사  >  백엔드 개발  >  Python 3.3에서 \"yield from\" 구문을 활용하는 사용 사례와 이점은 무엇입니까?

Python 3.3에서 \"yield from\" 구문을 활용하는 사용 사례와 이점은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-24 03:44:02407검색

What are the Use Cases and Benefits of Leveraging

실제로 Python 3.3의 "yield from" 구문 활용

Python 3.3에 도입된 "yield from" 구문은 다음을 제공합니다. 생성기와 코루틴의 기능이 크게 향상되었습니다. 호출자와 하위 생성기 사이에 양방향 연결을 설정하여 양방향의 원활한 통신을 가능하게 합니다.

"yield from" 사용 사례

읽기 생성기의 데이터:

  • 이 사용 사례는 for 루프의 기능을 모방하지만 예외 전파의 편의성이 추가되었습니다. 예:
<code class="python">def reader():
    for i in range(4):
        yield '<< %s' % i

def reader_wrapper(g):
    yield from g

wrap = reader_wrapper(reader())
for i in wrap:
    print(i)

# Result:
# << 0
# << 1
# << 2
# << 3

코루틴에 데이터 보내기:

  • 이 시나리오에는 전송된 데이터를 받아 쓰는 코루틴을 만드는 작업이 포함됩니다. 파일이나 소켓과 같은 지정된 위치로. 예:
<code class="python">def writer():
    while True:
        w = (yield)
        print('>> ', w)

def writer_wrapper(coro):
    yield from coro

w = writer()
wrap = writer_wrapper(w)
wrap.send(None)  # Prime the coroutine
for i in range(4):
    wrap.send(i)

# Expected result:
# >>  0
# >>  1
# >>  2
# >>  3</code>

마이크로 스레드와의 비교

구문의 산출량은 일시 중지 및 코루틴을 재개하여 기존 스레드에 대한 가벼운 대안을 만듭니다. 그러나 코루틴은 마이크로 스레드에 비해 더 가볍고 메모리 오버헤드가 더 낮습니다. 또한 동일한 스레드에서 실행되므로 다중 스레드 환경에서 컨텍스트 전환과 관련된 문제를 피할 수 있습니다.

위 내용은 Python 3.3에서 \"yield from\" 구문을 활용하는 사용 사례와 이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.