Dev Language/Python

[파이썬_4] #17. AsyncIO Basic

ydin 2021. 12. 8. 23:09
  • 공부한 날짜: 2021.12.05

 

  • 동시 프로그래밍 패러다임의 변화 발생
  • 싱글 코어: 처리향상 미미하거나 저하 -> 비동기 프로그래밍이 대두됨  -> CPU 연산, DB 연동, API 호출 대기 시간 늘어남
  • 제어권을 넘겨서 다른 작업을 하다가 다시 작업을 이어서할 수 있게함 
  • 파이썬 3.4 -> 비동기(asyncio)가 표준라이브러리로 등장 

 

 

  • 주의해야할 점 -> 비동기 함수에서 비동기 함수로 실행할 때는 반드시 await 입력해야한다 -> 걍 외워야함 

 

  • I/O Bound AsyncIO 예제
  • 같은 내용의 함수를 async(), sync()로 구현 
  • 다른 점 찾아보기 

 

 

1. Async()

  • exe_calculate_async()
  • async로 진행할 함수는 무조건 async def 선언하기 
  • 비동기 함수에서 비동기 함수로 실행하므로 await 입력하기 
  • exe_calculate_async -> process_async
  • asyncio.sleep(i): i 초 동안 태스크 중단 후 다른 태스크 실행 

 

  • process_async()
  • asyncio. wait(): 코루틴 함수에 시간 제한을 두고싶을 때 사용하면 된다-> 이부분은 아직 이해가 잘 가지 않는다 나중에 다시 한번 더 봐야할듯 (해당 내용 사이트: https://www.daleseo.com/python-asyncio/)

 

2. Sync()

 

  • exe_calculate_sync()
  • await asyncio.sleep이 아닌 time.sleep임 

 

  • process_sync()
  • await asyncio.wait()가 아닌 그냥 함수에 파라미터 넣음 

 

  • main 실행 

1. Sync 실행: 하나의 프로세스 진행 중에 다른 프로세스 진행 불가 

2. Async 실행 and 파이썬 3.7 이상 : 다른 프로세스 진행 가능 

3. Async 실행 and 파이썬 3.6 이하