"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python 3.3에서 \"yield from\" 구문을 활용하는 사용 사례와 이점은 무엇입니까?

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

2024-11-06에 게시됨
검색:979

What are the Use Cases and Benefits of Leveraging \

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

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

"yield from" 사용 사례

읽기 생성기의 데이터:

  • 이 사용 사례는 for 루프의 기능을 모방하지만 예외 전파의 편의성이 추가되었습니다. 예:
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

코루틴으로 데이터 보내기:

  • 이 시나리오에는 전송된 데이터를 받아들이고 파일과 같은 지정된 위치에 쓰는 코루틴을 만드는 작업이 포함됩니다. 아니면 소켓. 예:
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

마이크로 스레드와의 비교

구문의 산출량은 코루틴을 일시 중지하고 재개할 수 있다는 점에서 마이크로 스레드와 일부 유사점을 공유하여 전통적인 스레드. 그러나 코루틴은 마이크로 스레드에 비해 더 가볍고 메모리 오버헤드가 더 낮습니다. 또한 동일한 스레드에서 실행되어 다중 스레드 환경에서 컨텍스트 전환과 관련된 문제를 방지합니다.

릴리스 선언문 이 글은 1729681907에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3