실제로 Python 3.3의 "yield from" 구문 활용
Python 3.3에 도입된 "yield from" 구문은 다음을 제공합니다. 생성기와 코루틴의 기능이 크게 향상되었습니다. 호출자와 하위 생성기 사이에 양방향 연결을 설정하여 양방향의 원활한 통신을 가능하게 합니다.
"yield from" 사용 사례
읽기 생성기의 데이터:
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!