참고 링크 :
우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original) - 인프런 | 강의
본 강의는 파이썬 기초를 배운 학습자가 파이썬을 실무에 활용할 수 있도록 수준 높은 문법을 배우는 데 중점을 두고 있습니다. 파이썬만의 차별점을 파악하고 빠르게 익힘으로써 중급 레벨의
www.inflearn.com
Blocking I/O : 호출된 함수가 자신의 작업이 완료 될 때까지 제어권을 가지고 있음. 타 함수는 대기상태
NonBlocking I/O : 호출된 함수가(서브루틴) return 후 호출 된 함수(메인 루틴)에 제어권 전달 -> 타 함수는 일 지속
AsyncIO 를 써도 사용하는 함수가 block함수를 쓴다면 AsyncIO를 쓰는 것 보다 단일쓰레드를 쓰는게 오히려 나음
쓰레드 단점 : 디버깅 , 자원 접근 시의 레이스컨디션(경쟁상태), 데드락(Dead Lock) <- 고려 하기가 어렵다.
코루틴 장점 : 하나의 루틴만 실행함 따라서 락 관리 필요X -> 제어권을 가져오는 방식으로 실행한다.
코루틴 단점 : 사용 함수가 비동기로 구현이 되어 있어야 하거나 , 또는 직접 비동기로 구현 해야 한다.
예를들어) Block이 되는 함수를 사용해야 하고 AsyncIO도 쓰고 싶을 때 자주 쓰이는 방법중 하나가 "Combining Coroutines with Theads and Processes" 이다. 쉽게 말해서 Block이 되는 함수를 각각의 프로세스나 쓰레드에서 구현하고 AsyncIO를 사용하는 방법이 있다.
'언어 정리 > python_비동기관련_lib' 카테고리의 다른 글
ThreadPool + 딕셔너리 컴프리헨션 (0) | 2022.07.31 |
---|---|
asyncio.queue 를 쓰레드와 asyncio 사이에서 사용 하기 (1) | 2022.07.13 |
AsyncIO_4_{ 저수준함수 : 이벤트 루프 : asyncio.get_event_loop( ) } (0) | 2022.05.05 |
python 쓰레드 개념 (0) | 2022.05.03 |
AsyncIO_3_{함수 : asyncio.Event 라이브러리 ( wait(),set(),clear() ) } asynchronous primitive (0) | 2022.04.20 |
댓글