• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

NonBlocking IO와 코루틴 에 대한 질문이 있습니다.

22.06.23 13:09 작성 조회수 123

0

강의에서 (08:29) "서브와 메인이 서로 제어권을 주고받는 게 NonBlocking IO 이며, 타 함수는 작업을 지속한다" 라고 필기를 해주셨는데요.

여기서 의문이 생겼습니다.

서브와 메인이 서로 제어권을 주고받는 건 코루틴인데..

제가 코루틴을 이해하기로는 코루틴이 작업을 끝내기 전까지 다른 함수(메인)들이 그 작업을 기다리고 있는 것으로 알고있었습니다. 어떻게 코루틴이 작업을 하는동안 타 함수가 일을 지속할 수 있는지 이해가 잘 안됩니다. 

제어권을 전달한다는 자체가 Blocking 작업이라는 거 아닌가요?

저는 오히려 코루틴은 Blocking 이고 스레드가 NonBlocking 이라고 이해가됩니다. 제가 틀린건가요?

답변 1

답변을 작성해보세요.

0

안녕하세요.

보통 코루틴에서 제어권을 전달하는 과정보다는 io , http 관련 작업을 하느 부분이

non-block , block 등과 관련이 있다고 생각되네요!

말씀하신 부분도 관점에 따라 일리가 있어요.

아래 공식 레퍼런스 한 번 읽어보세요.

https://docs.python.org/3/library/asyncio-task.html#running-in-threads