Python
TIL35 - 코루틴 사용하기(4/6) : (짧)혼자해보는 코루틴 작동 순서
Django King, Lee
2022. 10. 10. 16:42
728x90
혼자해보는 코루틴 작동 순서
이 부분은 파이썬 코딩도장엔 없고, 혼자 궁금해서 해보고 작성하게 되었습니다.
만약 여러 개의 yield가 들어가면 끊어져서 나올텐데 실제로는 어떻게 나올까? 하는 궁금증이 생겨서 직접 해봤습니다.
티스토리로 보기 불편하신 경우, Github에서 보실 수 있습니다.
def sum_coroutine():
try:
total = 0
while True:
print("*"*10, "Not yield")
x = (yield)
print("*"*10, "X yield", x)
total += x
yield total
print("*"*10, "total yield", total)
except RuntimeError as e:
yield total
위와 같이 계속 send()를 통해 값을 보냈을 때 진행상황이 궁금해서 계속 해봤습니다.
co = sum_coroutine()
next(co)
- yield를 발생시키기 위해
next(co)
를 입력합니다. - 그 다음부터 계속
send(1)
을 보냈습니다. - 39번째 줄에서 1을 처음 보냈을 때, x에 1이 저장되고 대기상태에 들어가며 print()를 실행합니다.
- 40번째 줄에서 1을 한 번 더 보내면 1이 더해져서 나오게 되고 다시 x를 받기전까지 대기상태에 들어갑니다.
계속 아래와 같이 반복하여 대기상태에 들어가며 직접 찍어보면서 흐름을 더 자세히 파악할 수 있었습니다.