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

메모리 누수를 파악하기 위한 작업-2-

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

안녕하세요?

 

이번 포스팅에서는 지난번 시간에 이어서 한번 tracemalloc을 사용, 메모리가 어디서 계속해서 누적이 되는지를 살펴 보고자 했으며, 그 결과를 이번 포스팅에 올려 보고자 합니다. 일단 먼저 해야 하는 일은 다른 것 없이 파워포인트에 이 결과를 적어서 한번 정리해 보는 것 입니다.

 

일단 각각의 비교 포인트를 적어서 ppt에 옮겨 보도록 합니다. 최대한 알아보기 쉽도록 만들어 준 것은 좋은데, 문제는 이러고도 여전히 알아보기 힘들다는 것 입니다.

 

문제는 1시간씩 작업을 시킨 것은 좋았는데, 정작 작업을 하고나서 보니, 지난번에 메모리 누수를 파악하고자 나름대로 설치한 pympler가 가장 많이 메모리를 먹고 있는 것을 확인할 수 있었습니다.

 

특별한 것이 parent_pytrader3.py에서 발견이 되지 않자, 이번에는 각각의 개별 MyStockTrader.py로 가서 한번 작업이 일어나는지 아닌지를 알아보기 위해서 한번 작업해 보도록 했습니다.

 

먼저 처음으로 이 py파일이 작동하기 시작하면 나오는 메소드에서 위 스크린샷처럼 첫번째 비교 포인트를 박아 주도록 합니다. 당연하다면 당연하게도 가장 최초의 포인트는 def __init__에 있습니다.

 

다음으로는 위 스크린샷에서 볼수 있는 것처럼 모의 주식투자를 들어가기 위한 메소드에서 처음으로 비교 포인트를 박아 주도록 합니다.

 

 

그리고 나서 계좌정보를 얻어오기 위한 코드 바로 직전에도 한번 비교 포인트를 박아 주는 것으로 해서, 계속해서 메모리 사용량을 비교해 봅니다.

 

그리고 나서 opw00001 이전에도 한번 메모리의 비교 포인트를 잡아 주도록 합니다. 이렇게 하는 것으로 계속해서 메모리가 어디서 새고 있는 지 알아 보도록 합니다.

 

다음으로는 본격적으로 자식 프로세스로서 Average_returning.py를 작동 시키기 바로 직전에 한번 더 비교 포인트를 잡아 주도록 합니다. 정확히는 관련된 함수들이 만들어 지기 바로 직전입니다.

 

다음으로는 위 스크린샷처럼 자식 프로세스를 작성하기 바로 직전에 한번 더 비교 포인트를 박아 주어서, 자식 프로세스인 subprocess작업을 하기 바로 직전에 메모리 사용량이 얼마나 변하는지 알아 보도록 합니다.

 

다음으로는 막 subprocess를 끝낸 직후에 위 스크린샷처럼 한번 작업을 이어 가도록 해 봅니다. 이렇게 하는 것으로 7ㅂ전째 포인트를 설치 하는데 성공했습니다.

 

이제 두뇌 역할을 하는 프로세스에서 나온 결과를 다 처리한 다음에는 메모리 사용량이 비교적 얼마나 변하는지에 대해서 한번 작업을 해 주도록 합니다.

 

마지막 비교 포인트 입니다. 여기서는 tradestock메서드 바로 직후에 다시 모의주식 투자를 하는 메소드에 들어가기 직전에 들어갑니다만, 여기서도 한번 최상위 10위까지 메모리 사용량이 많은 곳이 어디인지 알아 보도록 하는 것 입니다.

 

일단 이렇게 하고서도 MyStockTrader.py의 작동에는 아무런 이상이 없다는 것을 확인할 수 있기는 있었습니다. 이제 한 사이클 돌려 보도록 합니다.

 

이렇게 하는 것으로 한 사이클이 돌아가는 것에 성공했습니다. 이제 남은 것은 생성된 txt파일을 보고서, 한번 어디가 어떻게 사용량이 비교해서 늘어났는지 알아보는 것에 있다는 생각이 듭니다. 일단 너무 포스팅이 길어지는 감이 있기에 여기서 한번 끊어 주도록 하겠습니다.

반응형