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

메모리 문제의 원인과 해결-2-

by 인터넷떠돌이 2019. 7. 3.
반응형

안녕하세요?

 

지난번 포스팅에서 Open API에 있는 프로그램 하나가 계속해서 종료가 되지 않고 남아서 계속 문제를 일으킨다고 했습니다. 그래서 이번 포스팅에서는 어떻게 해서, 계속 반복적인 작업을 할 수록 쌓여가게 되는 이 프로그램을 종료할 수 있는지에 대해서 한번 다루어 보고자 합니다.

 

먼저 위 스크린샷과 같이 이렇게 해서 opstarter.exe가 쌓이는 문제가 해결하기 위해서 일일히 자식 프로세스의 내용을 수정하는 것이 귀찮아서, 먼저 2개의 프로세스만 실행을 하도록 했습니다.

 

일단 작업관리자에서 위 스크린샷에서 볼 수 있는 것처럼 자세히를 클릭하면, 계속해서 자세한 내용-PID값까지 확인을 할 수 있기는 있는데, 문제는 이게 남의 프로세스에서 실행중인 Open API를 종료시켜 버릴 위험이 있다는 것 입니다.

 

그래서 가지가지 시도끝에 먼저 psutil이라는 모듈을 가지고 오도록 합니다. 이 모듈을 과거에 설치한 적이 있기 때문인지는 몰라도 일단 import자체는 제대로 되었습니다.

 

그리고 먼저 하는 것은 psutil의 process_iter()라는 함수를 이용해서, 작업관리자에 뜰 수 있는 모든 프로세스의 이름을 띄운다음, 이 프로세스와 opstarter.exe라는 이름이 같으면, if 조건문에 따라서 프로세스를 kill()하라는 명령을 내리는 것 입니다.

 

 

그리고 나서 cmd상에서 실행을 시키려고 하면, 위 스크린샷처럼 cannot import '_psutil_windows' 라는 에러가 뜨는 것을 확인할 수 있었습니다.

 

그래서 처음에는 별 생각없이 psutil이 실제로는 설치가 되지 않아서 이런 일이 벌어진 것이 아닌가 하는 생각이 들어서 한번 아나콘다 프롬프트에서 설치를 진행해 보았습니다.

 

그런데 의외로 설치 자체는 제대로 되어 있는 것을 나옵니다. 그래서 인터넷을 뒤졌더니, 이게 psutil의 버젼이 낮아서 생기는 문제라는 것을 알수 있었습니다.

 

그래서 다음으로 한 것은 위 스크린샷에서 볼 수 있는 것처럼 일단 pip uninstall psutil이라고 입력해서 해당 모듈을 언 인스톨하고, 다시 pip를 이용해서 인스톨하는 방식으로 업데이트 시켜 주도록 합니다.

 

그 다음에 한번 실행을 시켰을 때는 이런 에러가 뜨지 않는 것 까지는 확인할 수 있었는데, 일단 스크린샷이 잘못 찍혔는 점은 양해 부탁드립니다.

 

다음으로는 무한 루프가 되지 않았는 것을 무한 루프가 되도록 만들어 주도록 합니다. 이렇게 하는 것으로 이제 메모리 사용량에 차이가 있는지 알아보도록 합니다.

 

그래서 위 스크린샷에서 볼 수 있는 것처럼 30분이 지났지만, 메모리의 사용량이 증가했다가 감소하기를 계속 반복하면서, 일정한 범위를 넘나드는 것을 볼 수 있었습니다. 이렇게 하는 것으로 이제 작업이 일단 완성이 되기는 되었습니다. 다음 포스팅에서는 모의투자에서는 어떻게 이를 적용해 보도록 하겠습니다.

반응형