본문 바로가기
언어 정리/python_비동기관련_lib

AsyncIO_5_멀티 스크랩핑 실습(인프런)

by 알 수 없는 사용자 2022. 6. 4.

 

참고 링크 :

https://www.inflearn.com/course/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%A4%91%EA%B8%89-%EC%9D%B8%ED%94%84%EB%9F%B0-%EC%98%A4%EB%A6%AC%EC%A7%80%EB%84%90/dashboard

 

우리를 위한 프로그래밍 : 파이썬 중급 (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를 사용하는 방법이 있다.

 

 

 

 

 

 

 

 

 

 

 

댓글