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

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

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

안녕하세요?

 

지난번 포스팅에서 나온 시도는 이래저래 메모리 누수를 잡기는 커녕, 있던 10개의 종목 동시에 감시하는 것도 안되는 결과를 초래하고 말았는데요, 그래서 이번 포스팅에서는 다른 결과를 얻기 위해서 이런저런 시도를 하고자 합니다. 그리고 그 과정을 이번 포스팅에서 보여드리겠습니다.

 

하다하다 안 되어서 기존에 있던 while과 sleep을 도로 불어오는 작업을 하도록 합니다. 그리고 자세히 보시면 에러가 있는데, 이것도 고쳐 주도록 합니다.

 

다음으로는 어디서 많은 메모리를 사용하는지 알아보기 위해서 pip를 이용, pympler를 설치해 보도록 합니다. 이 작업은 그리 많은 시간이 걸리지 않습니다.

 

그리고 나서 일단 MyStockTrader1에서 위 스크린샷과 같이 pympler를 가지고 오는 과정을 넣어 주도록 합니다. 이렇게 함으로써, 일련의 작업을 시작합니다.

 

그리고 나서 한번 한개의 사이클이 끝나는 시점에서 이렇게 어디서 메모리를 많이 소모를 하는지 알아보기 위한 SummeryTracker()라는 함수를 사용하고, 그 결과를 출력해 보도록 합니다.

 

 

일단 제일 첫번째 결과가 나오는 것을 볼 수 있었습니다. 우선 메모리의 사용량이 list라는 객체가 가장 많이 사용하고 있다는 것을 알 수 있었습니다.

 

그런데 총 30번의 사이클 중에 15번째에 와서는 위 스크린샷처럼 리스트도 리스트지만, 문자열 데이터도 상당히 많은 양의 데이터를 사용하고 있다는 것을 알 수 있었습니다.

 

그런데 이렇게 중간에 변한 상태로 마지막까지 아무런 변화가 없는 채로 그대로 진행이 되는 것을 확인할 수 있었습니다. 이래서야 어디가 어떻게 변하는 것인지 전혀 알 수 없다는 생각이 들었습니다.

 

그래서 한번 메모리의 사용량을 줄여 보고자, del명령어를 사용해서, 이렇게 하면 변화가 있을까 싶어서 작업을 해 보도록 합니다.

 

그렇게 해 보았지만, 아무런 변화가 없는 것을 확인할 수 있었습니다. 너무 미미해서 확인을 못하는 것일까요? 일단 그거는 아닌 것으로 생각이 됩니다.

 

전체적인 메모리의 상용량은 지난번에 결과와 아무런 차이점이 없다는 생각이 들었습니다. 이래서야 어떻게 메모리의 사용량이 증가하고 감소하는 지를 모니터링 하는 툴 부터 없다는 생각이 들었습니다.

 

줄을 잘못 그어놓기는 했지만, 이번에는 parent가 되는 프로세스에다가 한번 pympler를 import해 오도록 해서, 여기서 한번 작업을 해 보도록 합니다.

 

그리고 map명령어 다음에 메모리의 사용량에 대해서 한번 추적을 들어가 보도록 코드를 설정해 주도록 합니다. 문제는 이렇게 했어도.......

 

아예 결과가 나오지 않는 것을 볼 수 있었습니다. 아무래도 이렇게만 해서는 뭐가 안될 것 같다는 생각이 들었으며, 다음으로 해야 할 일은 어떻게 다른 장소에다가 메모리를 추적하는 함수를 사용할까 하는 것이 되겠다는 생각이 들었습니다. 

반응형