인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

vpdtlrdl님의 프로필 이미지
vpdtlrdl

작성한 질문수

우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)

AsyncIO 멀티 스크랩핑 실습 (1-2)

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

작성

·

2K

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

 

vpdtlrdl님의 프로필 이미지
vpdtlrdl

작성한 질문수

질문하기