본문 바로가기
무모한 도전-주식 인공지능 만들기

메모리 누수를 잡기위한 여정 part3

by 인터넷떠돌이 2019. 6. 23.
반응형

안녕하세요?

 

지난번 포스팅에서는 어떻게 해서, 메모리 사용량을 체크해 보려고 했습니다만, 이게 뜻대로 되지 않는 것을 볼 수 있었습니다. 그래서 이번 포스팅에서는 다른 장소에다가 메모리를 체크하는 함수를 사용, 이 메모리의 사용량을 한번 살펴 보고자 합니다.

 

이번에는 아예 while문 안에다가 SummaryTracker()를 잡아 넣도록 해서, 작업을 해 보도록 합니다. 이렇게 하는 것으로 이번에는 메모리의 사용량을 체크할 수 있으리라 생각을 했습니다.

 

이제서야 결과가 나오는 것을 볼 수 있기는 있는데, 어째서 인지 2번째 사이클 부터는 첫번째 사이클때 비하면 메모리의 사용량이 비약적으로 줄어드는 것을 확인할 수 있었습니다.

 

그런데 언제 사용이 된 메모리 인지 알길이 없어서 현재 시간을 알아보기 위해서 time.strtime을 사용한 것은 좋았습니다만, 형식이 제대로 맞지 않아서 에러를 일으켰습니다.

 

 

그래서 한번 time.strtime(형식, time.gmtime())이라는 형식의 함수를 사용, 여기서 현재 시간을 잡아오도록 바꾸어서 사용을 하도록 했습니다.

 

이렇게 해서 시간이 나오는 것을 볼 수 있었습니다. 그런데 한가지 문제가 생겼습니다. 일단 위 스크린샷은 처음의 10개 종목을 모니터링 하고 나서 다음 사이클이 시작되는 시점인데, 여기서도 메모리 사용량이 줄어드는 것을 확인할 수 있습니다.

 

이러한 현상이 마지막까지 지속이 되는 것을 볼 수 있었습니다. 물론 몇 시간씩 흐르면 상황이 달라지리라 생각은 되지만, 그래도 메모리의 사용량을 파악하는 데는 그다지 도움이 안되기는 안 되었습니다.

 

그래서 한번 마지막으로 gc라는 내장모듈인 garbage collector라는 모듈을 불러와서, 쓰고 버려진 메모리들을 다시 긁어 모으는 역할을 시키도록 합니다.

 

그리고 나서 위 스크린샷처럼 쓰고 버려진 메모리를 다시 모으라는 명령어를 각 사이클마다 한번씩 실행하도록 만들고 나서, 이제 2019년 6월 21일 모의투자 결과를 보도록 합니다.

 

일단 21일 금요일은 하루종일 매도만 했는 것을 볼 수 있었는데, 여기서 하나 알 수 있는 것은, 제대로 주식시장이 장중 내내 모니터링 하지 않아도 팔 주식은 판다는 것을 알 수 있었고

 

2번의 손해가 있기는 했지만, 나머지 종목에서 그 손해를 메웠기 때문에 결국 이익이 남는 것을 확인할 수 있었습니다. 결국 평균으로 회귀할 주식은 회귀를 하는데, 문제는 언제 회귀를 할지 예상하지 못한다는 현실적인 어려움이 있습니다. 아무튼 이런걸 제외하더라도, 평균회귀가 제법 강력한 주식에서 돈 벌어다 주는 법칙인 것은 틀임없어 보입니다.

반응형