본문 바로가기
Language/Go

Scraper 을 통해 실습해본 Go와 Python 의 성능 테스트

by forestlim 2022. 7. 24.
728x90
반응형

노마드 코더의 강의를 들으면서 Go Scraper를 실습해보았다. 무료 강의여서 부담없이 Go 를 체험(?) 해볼 수 있었다. 확실히 매력적인 언어였다. 멀티코어를 GO의 Channel을 이용해서 Goroutine으로 구현했더니 파이썬의 multiprocessing 을 이용한 것보다 엄청나게 빠른 속도를 보여주었다..ㄷㄷ

 

예제코드를 깃헙에 올려두었다. 파이썬 scraper 코드와 Goroutine을 사용해서 만든 scraper 코드 모두 올려두었다.
https://github.com/HWALIMLEE/go-project/tree/main/job_scraper/goroutine

 

GitHub - HWALIMLEE/go-project: go 를 공부하기 위한 repo

go 를 공부하기 위한 repo. Contribute to HWALIMLEE/go-project development by creating an account on GitHub.

github.com

 

노마드코더 강의에서는 indeed.com  이 사이트를 스크래이핑 한다.

10페이지 스크래이핑 해서 가져온 후 파일까지 생성해서 저장하는것까지 1초가 걸리지 않았다...놀라울뿐...

보다시피 Go는 for문을 순서대로 처리하지 않기 때문에 요청이 간 페이지의 순서가 뒤죽박죽인 걸 볼 수 있다.

 

🧐 그렇다면 파이썬에서는?

multiprocessing 을 적용하지 않고 그냥 스크래이핑 하면 시간이 얼마나 걸릴까?

Go와는 다르게 순서대로 요청이 가고 총 7초가 넘게 걸린 것을 볼 수 있다...Go는 대체...

 

그렇다면 파이썬에 multiprocessing 을 적용해보면 Go와 얼마나 차이가 날까 궁금해서 multiprocessing 도 적용해보았다.

 

먼저, Process를 2개 적용했을 때 결과이다. 7초에서 무료 4초로 줄었다. 

 

그렇다면 Process를 4개로 설정하면 어떻게 될까. 로그 찍히는 속도가 훨씬 빨라졌고 시간도 2초로 많이 줄었다.

그럼 8개 풀로 쓰면 어떻게 될까?? 4개 사용했을 때와 비슷하다. 

 


😃 Go를 쓰면서 느끼는 점

일단 기본적으로 문법이 어렵지 않아서 너무 좋다. 또한 간단하다..! JS의 for문만 해도 for in, for of, forEach 엄청 다양한데 Go는 그냥 for range 이거 하나다...

 

또한 간단해서 코드 스타일이 서로 달라서 맞추거나 해야할 일이 거의 없을 것 같다. 물론 아직 Go 를 많이 사용해보지 않아서 정확하게는 모르겠으나 일단 사용하기가 겁나 편했다..

 

 

728x90
반응형

댓글