티스토리 뷰

만약 1000 개의 웹 페이지를 불어와야 하는 상황이 있다.


이때 1개의 페이지를 요청하면 서버에서 처리해줘서 응답해 주는 시간은 1초라고 하자.


그러면 1000 개의 페이지를 응답 받으려면 


1000 초가 걸린다.


사실 1개 요청하고 1초 동안 아무것도 안하고 기다리는 시간이 너무 아깝다.


이렇게 바쁠 때는 몸이 열개라도 모자라다는 말을 한다.



[multi thread]


멀티 스레드는 실제로 몸이 10개이다. 


스레드를 일꾼으로 볼 수 있다.


 n 개의 일꾼이 동시성을 가지고 일을 수행한다.


하지만 각 일꾼은 자기일이 끝나면 가만히 놀고 있을 수 있다.



[async]


한페이지를 로딩하면서 다른 페이지를 로딩한다.


스레드는 하나지만 굉장히 빨리 다른일로 전환하여 수행한다.


이게 가능하려면 함수를 실행결과를 기다리는 일반 함수에서 멀티 테스킹이 가능한 함수로 변경해야 한다.


이것을 코루틴(coroutine) 이라고 한다.


이것은 파이썬에서 제공하는 asyncio 모듈에서 지원한다. 




[sync]


하나의 작업이 끝날 때까지 기다렸다가 다음 작업을 한다.


동시성이 없다. 


단일 스레드 sync 이다.





댓글