[TIL] Python Coroutine, 코루틴이란?

김경민·2023년 1월 9일
0

TIL

목록 보기
11/15
post-thumbnail

코루틴을 알기 전 몇가지 간단하게(내가 잘 모르니까 ㅋㅋ) cs지식을 짚고 넘어가자

바운드와 블로킹

블로킹 : 바운드에 의해 코드가 멈추게 되는 현상

CPU 바운드

  • 프로그램이 실행될 때 실행 속도가 CPU속도에 의해 제한 됨을 의미
  • 복잡한 수학 수식을 계산할 때(연산을 많이할 때)

I/O 바운드

  • Input/Output 바운드
  • 프로그램이 실행될 때 실행 속도가 I/O에 의해 제한됨을 의미
  • 사용자가 키보드로 숫자를 입력하는 경우 뿐만 아니라, 컴퓨터와 컴퓨터끼리 통신을 할 대에도 I/O 바운드가 발생한다.

동기 vs 비동기

동기(Sync)

  • 코드가 동기적으로 동작한다. => 코드가 반드시 작성된 순서 그대로 실행된다.

비동기(Async)

  • 코드가 작성된 순서대로 실행되지 않는다.

코루틴은 비동기로 처리된다.

코루틴의 이해

루틴

  • 하나의 진입점과 하나의 탈출점이 있는 루틴이다.
  • 루틴이란? 일련의 명령 (코드의 흐름)
    • 메인 루틴 : 프로그램의 메인 코드의 흐름
    • 서브 루틴 : 보통의 함수나 메소드(메인 루틴을 보조함)

코루틴

  • 서브 루틴의 일반화된 형태
  • 다양한 진입점과 다양한 탈출점이 있는 루틴이다.(간단하게 다양한 출/입 함수이다)
  • 파이썬에서는 비동기 함수는 코루틴 함수로 만들 수 있다.

async/await

  • 코루틴 함수는 async 키워드를 함수 앞에 붙여 사용이 가능하다.
  • 원하는 진입/탈출점에 await 키워드를 붙여 사용한다.
  • async 함수 밖에서 await 키워드를 사용하고 싶은 경우에는 ayncio 내장 라이브러리를 사용한다.
  • asyncio.run(함수())
  • 또한 await 키워드 뒤에는 어웨이터블 객체(coroutine, task, future)가 와야한다.

task

  • 코루틴을 동시에 예약하는 데 사용된다.
  • asyncio.create_task()와 같은 함수를 사용해 테스크로 싸일 때 코루틴은 곧 실행 되도록 자동으로 예약됩니다.

예제는 좀 더 숙지 후 올릴 예정

profile
안녕하세요

0개의 댓글