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

가장 힘들어 보이는 장애물을 넘기 위한 시도-8-

by 인터넷떠돌이 2019. 4. 18.
반응형

안녕하세요?

 

일단 계속해서 시도를 하는 와중에 이제서야 겨우 겨우 안되는 장애물을 넘기는 넘었습니다. 다만, 그 내용까지 포스팅을 하기 까지는 아직도 시행착오를 올려야 하는 내용이 많아서 조금은 시간이 걸릴 수도 있습니다만, 그래도 어떻게 해서든 간에 100% 마음에 들지는 않지만 작동이 되는 방법을 찾기는 했기 때문에, 한동안 포스팅이 연속으로 이어질 듯 합니다.

 

먼저 언급을 해야 하는 것은, 어떻게 된 것인지 모르겠습니다만, 계속해서 에러가 나오는 것을 볼 수 있었습니다. 그래서 한번 우연한 기회에 타이핑을 다시 하도록 해 보았습니다.

 

먼저 메인이 되는 함수의 마지막 자리에 가서는 표식을 찍어 주도록 했습니다. 그래서, 에러가 발생을 할 때는 하더라도, 어디에서 발생을 하는 지를 알아볼 수 있도록 만들었습니다.

 

다음으로는 위 스크린샷에서 보이는 것처럼 processState()라는 함수 대신에, 그냥 state()라는 함수를 사용해서 한번 진행을 해 보도록 합니다.

 

이제서야 제대로 된 변화 같은 것이 보이는 것을 확인할 수 있었습니다. 그래서 드는 생각이 무엇인고 하니, 지금까지 함수를 잘못 보고서 잘못 사용해서 잘못된 결과를 내었는데, state()라는 함수로 제대로 된 결과를 낼 수 있어 보입니다.

 

그리고 나서는 위 스크린샷에서 나오는 것처럼, state()라는 함수를 이용해서 한번 시작하기 전에 어떤 state를 나타내는 것인지 알아보도록 합니다.

 

 

일단 기존에 있던 processState()와는 무엇이 다른가 하면, 제대로 QProcess가 실행이 되면 state()의 상태가 정지되어 있다는 0에서 작동이 되고 있으며, 쓰고 읽기가 가능한 상태라고 하는 2의 값을 나타내는 것을 볼 수 있습니다.

 

그리고 나서 이 state()라는 함수를 한번 다양한 장소에 사용을 해서, 어느 순간 QProcess가 어느 순간 죽어버리는 것은 아닌지 알아보도록 합니다.

 

그리고 나서 찾아보니까, 어딘가 에러가 발생한 경우라면, processError()라는 함수가 아니라, 이 역시도 error()이라는 함수로 알아볼 수 있다고 해서, 이번에는 어디서 에러가 일어난 것인지 알아보도록 시도를 합니다.

 

그런데 계속해서 5라는 값이 나오다가 에러나 출력을 읽어 들여야 하는 단계에 와서는 위 스크린샷과 같이 2라는 값을 반환하는 것을 볼 수 있습니다.

 

그래서 이 5라는 값이 처음부터 뭐가 잘못된 것이 아닌가 싶은 생각이 들어서, 위 스크린샷과 같이 모든 코드마다 이 error()함수를 사용해서 어떤 오류가 보고가 되는지를 살펴 보고자 합니다.

 

그런데 어떻게 된 것인지 몰라도, 위 스크린샷에서 볼 수 있는 것처럼, error()라는 함수에서는 계속해서 그냥 5라는 값을 반환하다가, 에러나 출력을 읽어야 하는 단계만 되면 위 스크린샷에서 볼 수 있듯이 2로 변하는데, 그 의미는 타임아웃이라고 해서 기다리다가 너무 시간이 걸려서 에러 보고를 했다는 의미입니다.

 

일단 그냥 5라는 값이 다른 의미도 있지만, 원래는 디폴트 값이라는 의미도 있기 때문에 특별한 에러가 없다는 의미도 역시 됩니다. 그래서 이번에는 자식 프로세스가 되는 test.py에서 위 스크린샷과 같이 QProcess에서 어떤 에러가 나왔는지를 살펴 보고자 합니다.

 

그리고 나서 이 값을 GUI에 표시하기 위해서, 위 스크린샷에서 보이는 것처럼 일단 두번째 클래스로 가서 값을 전달 하도록 해봅니다.

 

그리고 나서 위 스크린샷과 같은 방식으로 그 값을 GUI에 표시하기 위한 위젯을 설정해 보도록 합니다. 레이아웃에서 추가해 주는 것도 잊지 말도록 합니다.

 

그리고 RLTrader에 있는 test.py만  실행을 시킨 결과, 받은 아무런 데이터가 없으며, 에러 메세지도 역시 기본값인 5라고만 나오는 것을 볼 수 있습니다.

 

다음으로 부모 프로세스인 pytrader3.py에서 실행을 시킨 결과, 자식 프로세스인 RLTrader까지 실행이 되기는 되었습니다. 그래서 여기서 알 수 있는 것은 하나인데, 일단 제대로 된 데이터가 전달이 된 것도 아니고, 읽기에 있어서 무슨 에러가 실행이 된 것도 아니라는 것을 알 수 있었습니다. 결국 이번 포스팅에서 나온 다양한 시도를 한 것은 좋았으나, 정작 나아진 것은 없었습니다.

반응형