인프런 커뮤니티 질문&답변
코루틴 흐름에 관한 질문
작성
·
258
0
안녕하세요 1-3 강의를 듣고 따라하는 중에 의문점이 들어 질문을 남깁니다.
공통 코드
import time
import asyncio
async def delivery(name, mealtime):
print(f'{name}에게 배달 완료')
await asyncio.sleep(mealtime)
print(f'{name}님 식사 완료, {mealtime}시간 소요')
print(f'{name}그릇 수거 완료')
async def main():
task1 = asyncio.create_task(delivery('경민', 1))
task2 = asyncio.create_task(delivery('윤민', 2))
#-----변경할 부분------#
#await task2
#print(1)
#await task1
#--------------------#
if __name__ == '__main__':
start = time.time()
asyncio.run(main())
end = time.time()
print(end-start)질문 1. create_task메서드 실행만 했을 경우 코루틴 함수의 await전까지 실행되는 이유
공통 코드 실행 결과:
>>> 경민에게 배달 완료
>>> 윤민에게 배달 완료
>>> 0.0000510...
개인생각 : create_task는 실행은 하지 않고 선언만 한 것인데 await전까지 왜 실행이 되나,,
질문 2. create_task메서드의 선언 순서 고정으로 출력되는 이유
#-----변경할 부분------#
await task2
#print(1)
await task1
#--------------------#>>> 경민에게 배달 완료
>>> 윤민에게 배달 완료
개인 생각: 윤민에게 먼저 배달을 해야하는 것이 아닌가
질문 3. 다음 결과의 이유
#-----변경할 부분------#
await task2
print(1)
await task1
#--------------------#
>>> 경민 배 완
>>> 윤민 배 완
>>> 경 식 완
>>> 경 그 수거
>>> 윤 식 완
>>> 윤 그 수거
>>> 1
개인 생각: 질문1,2의 경험 없이 생각을 해보면
경민에게 배달하고 1이 출력된 다음에 윤민에게 배달을 해야하는게 아닌가 하는 의문이 듭니다.
답변
답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!





