- 공부한 날짜: 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 이하
'Dev Language > Python' 카테고리의 다른 글
[파이썬_4] #19. CPU Bound- Synchronous (0) | 2021.12.08 |
---|---|
[파이썬_4] #18. I/O Bound AsyncIO (미완결) (0) | 2021.12.08 |
[파이썬_4] #16. I/O Bound Multiprocessing Pool (0) | 2021.12.08 |
[파이썬_4] #15. I/O Bound Threading (0) | 2021.12.08 |
[파이썬_4]#14. I/O Bound - Synchronous (0) | 2021.12.08 |