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

초기 테스터(initial tester)의 제작-44-

by 인터넷떠돌이 2020. 2. 2.
반응형

안녕하세요?

 

원래라면 아마 완성을 눈앞에 두었겠지만, 다시 실전처럼 작업을 하려다가 예상치 못한 에러가 나오는 바람에 다시금 일련의 포스팅 시리즈가 이어지게 되었습니다. 일단 이번 에러는 메모리 오류를 수정하는 것이라고 할 수 있는데, 아무튼 간에 이번 포스팅에서는 어떻게 해서 오류를 인식하게 되었으며, 첫 시도를 올리고자 합니다.

먼저 작업을 하기 위해서 120개의 분봉에서 평균과 표준편차를 구한 다음, 여기서 나온 결과를 그냥 그대로 사용하는 룰을 한번 테스트 해 보기 위해서 먼저 코스피 전체를 돌려 보고자 합니다.

먼저 작업을 하기 위해서 10분봉을 가지고서 한번 작업을 해 보고자 합니다. 일단 이 작업 자체는 그렇게 크게 어려울 것이 지금으로써는 없어 보였습니다.

그런데 코스피 전체를 한번 가려고 하다가 갑자기 이런 에러가 발생하는 것을 볼 수 있었습니다. 저로서는 생각지도 못한 에러였기 때문에, 일단 무슨일인지 알아봐야 했습니다.

그래서 이번에는 20개의 종목을 가지고서 한번 돌려 보아서, 여기서 에러가 나오는 것인지 아닌지에 대해서 먼저 작업을 걸어 보도록 했습니다.

 

 

일단 파이참의 디버그 모드를 사용하는 것으로 해서, 어떻게 결과를 얻기는 얻었는데, 문제는 이게 메모리 에러라는 것이 문제입니다.

먼저 위 스크린샷을 보시면 for루프 안에서 클래스를 객체화라고 해야 할까 오브젝트로 만들어 주는 과정을 계속해서 반복하고 있습니다. 일단 이건 좋을 것이 하나도 없기 때문에 마지막에 가서는 del로 지워 주도록 합니다.

그런데 그러고도 에러는 해결이 되지 않았습니다. 물론 생각없이 그냥 실행을 눌러서 정확하게 무슨 에러인지 나오지는 파이참 상에서는 나오지 않았습니다.

그래서 특단의 조치를 취하기로 했습니다. 먼저 클래스가 객체화 될 때 마다 초기화가 되었던 변수를 아예 떼어내서 별도의 메서드에서 초기화가 되도록 설정을 해 줍니다.

 

그리고 나서 클래스의 객체화는 그냥 메인 py파일이 실행될 때 딱 한번만 해 주도록 설정을 해 주도록 합니다. 이렇게 해서 여러번 클래스를 불러오지 않도록 해서 메모리를 절약하도록 만들어 주고

그 다음으로는 원래는 없었던 초기화를 위한 메서드를 호출하도록 하고, 여기서 chart_data를 받아 오도록 합니다. 이렇게 하는 것으로 첫번째 변화를 주었으며.......

다음으로는 리셋을 하기 위한 메서드도 for루프 시작 지점에서 불러 오도록 하고, 기존의 클래스를 가르키던 변수는 다른 메서드에 있기 때문에 건너뛰기 위해서 self를 붙여 주도록 합니다.

그런데 이렇게 했음에도 불구하고 문제가 해결이 전혀 되지 않는 것을 확인할 수 있었습니다. 아무래도 이 문제를 해결하기 위해서는 장시간의 노력이 들어가야 할 것 같다는 생각이 들었고, 실제로도 그렇게 되었습니다. 아무튼 앞으로 이어지는 일련의 포스팅을 보시고, 이 오류를 해결하는 방법을 보여드리겠습니다.

반응형