실제로 Python 3.3의 "yield from" 구문 활용
Python 3.3에 도입된 "yield from" 구문은 다음을 제공합니다. 생성기와 코루틴의 기능이 크게 향상되었습니다. 호출자와 하위 생성기 사이에 양방향 연결을 설정하여 양방향의 원활한 통신을 가능하게 합니다.
"yield from" 사용 사례
읽기 생성기의 데이터:
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
마이크로 스레드와의 비교
구문의 산출량은 코루틴을 일시 중지하고 재개할 수 있다는 점에서 마이크로 스레드와 일부 유사점을 공유하여 전통적인 스레드. 그러나 코루틴은 마이크로 스레드에 비해 더 가볍고 메모리 오버헤드가 더 낮습니다. 또한 동일한 스레드에서 실행되어 다중 스레드 환경에서 컨텍스트 전환과 관련된 문제를 방지합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3