• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

await asyncio.sleep() 의 정확한 실행 과정이 궁금합니다

21.12.22 20:58 작성 조회수 1.27k

0

await asyncio.sleep() 코드가 어떻게 실행되는지에 대한 설명을 찾을 수가 없어 질문 드립니다

import asyncio

async def main():
    print('tim')
task = asyncio.create_task(foo('text'))
    await asyncio.sleep(1)
    print('finished')

async def foo(text):
    print(text)
    await asyncio.sleep(5)
   
asyncio.run(main())

위의 코드를 실행한 결과, 

tim

text

그리고 1초 후에 finished가 출력되었습니다.

stackoverflow에서 다음과 같은 설명을 찾을 수가 있었습니다. 

"But when you call await asyncio.sleep(), it will ask the event loop to run something else while your await statement finishes its execution."

그럼 위의 코드에서는 

task = asyncio.create_task(foo('text'))

를 통해 태스크를 예약하고 그 후에 

await asyncio.sleep(0.1)

asyncio.sleep 구문을 만나게 되는데,

왜 

async def foo(text):
    print(text)
    await asyncio.sleep(5)

속의 asyncio.sleep(5)는 코드의 진행에 어떠한 영향도 주지 못하는지 잘 이해가 가지 않습니다

await과 asyncio.sleep()의 기능과 진행 방향에 대한 설명을 부탁드리고 싶습니다

답변 1

답변을 작성해보세요.

0

안녕하세요.

좋은 질문이예요.

쉽게 생각해서 asyncio.sleep() 호출 시 위 task가 실행된다고 보시면 됩니다.

마지막에 sleep(5)구문은 다른 태스크가 없으므로, 삭제 하셔도 결과는 똑같습니다.

 

tim

text

1초 뒤

finished