Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- F객체
- racecondition
- docker
- 도커
- DRF
- dry-yasg
- to_attr
- apitestcase
- Transaction
- CD
- Continuous Delivery
- CI
- DjangoCache
- 백준
- Coroutine
- DjangoRestFramework
- nestedfunction
- django
- database
- aggregate
- Python
- Prefetch_related
- EC2
- Continuous Deployment
- Git
- annotate
- 코루틴
- testcase
- QuerySet
- aws
Archives
- Today
- Total
BackEnd King KY
TIL35 - 코루틴 사용하기(4/6) : (짧)혼자해보는 코루틴 작동 순서 본문
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를 받기전까지 대기상태에 들어갑니다.
계속 아래와 같이 반복하여 대기상태에 들어가며 직접 찍어보면서 흐름을 더 자세히 파악할 수 있었습니다.
'Python' 카테고리의 다른 글
TIL35 - 코루틴 사용하기(6/6) : 파이썬 코딩도장 문제 (0) | 2022.10.10 |
---|---|
TIL35 - 코루틴 사용하기(5/6) : 하위 코루틴 반환값 가져오기 (0) | 2022.10.10 |
TIL35 - 코루틴 사용하기(3/6) : 코루틴 종료하고 예외 처리하기 (0) | 2022.10.09 |
TIL35 - 코루틴 사용하기(2/6) : 코루틴바깥으로 값 전달하기 (0) | 2022.10.09 |
TIL35 - 코루틴 사용하기(1/6) : 코루틴에 값 보내기 (0) | 2022.10.09 |