AsyncIo는 비동기 I/O Coroutine 작업을 해준다.
하나의 라이브러리인데 3.3에서는 pip install asyncio로 다운로드 할 수 있으며
3.4 부터 라이브러리에 탑재 되어 있다.
asyncio - Asynchronous I/O - Python 3.9.1 documentation
Blocking I/O , Non Blocking I/O
- Blocking I/O : 호출된 함수가 자신의 작업이 완료 될 때 까지 제어권을 가지고 있음, 타 함수 대기
- NonBlocking I/O : 호출된 함수가(서브루틴) return 후 호출한 함수(메인 루틴)에 제어권 전달 → 타 함수는 일 지속
내가 쓸 함수도 비동기로 구현해야한다.
최종정리
- 쓰레드 단점 : 디버깅, 자원 접근시 레이스컨디션(경쟁상태), 데드락(Dead Lock) → 고려 후 코딩
- 코루틴 장점 : 하나의 루틴만 실행 → 락 관리 필요x → 제어권으로 실행
- 코루틴 단점 : 사용 함수가 비동기로 구현이 되어 있어야 하거나, 또는 직접 비동기로 구현해야한다.
실습
- 가상환경 생성
- 타켓 사이트 살펴보기
- 프로그램 설명
- async, await 설명
- 프로그램 테스트
응용 코드