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

pytrader의 parent process를 만드는 작업에 들어가 보기-12-

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

안녕하세요?


어제에 이번 포스팅까지 이어서 올렸어야 했는데, 가지가지로 바빠서, 블로그에 글을 못 올렸습니다. 아무튼 이번 포스팅에서는 지난번 부터 계속해서 괴롭혀온 시작하자 마자 작동하는 메서드가 있으면, 어떻게 해서 gui를 띄울 수 있는지를 알아보았고, 여러가지 시도한 결과 성공적인 결과까지 나오는 것을 이번 글에서 올리고자 합니다.



먼저 위 스크린샷과 같이 __name__ == "__main__": 항목에다가 위 스크린샷에서 보이는 것처럼 qApp.processEvents()함수를 .show() 바로 아랫줄에 놓도록 시도를 해 보았습니다.



그러나 이렇게 했음에도 불구하고, 계속해서 메서드가 먼저 실행이 되고, 메서드의 종료를 기다기는 것을 확인할 수 있기는 있었습니다.



그래서 다음 작업으로는 위 스크린샷에서 보이는 것처럼 실행을 위한 구문-정확히는 최종적으로 실행하는 주체라는 것을 알려주는 구문인 if __name__ == "__main__": 에다가 main()이라고만 적고, 여기서 Tab키를 써서 띄우지 않은 상황에서 def로 main이라는 메서드를 구현하도록 합니다.


여기서 가장 중요한 것은 우선 클래스().show() 다음에 processEvents()를 집어 넣도록 하고, 그 다음에서는 RLTrader를 실행시키기 위한 코드를 그 다음에 배치를 하였습니다.



그리고 나서 기존에 있던 RLTrader를 실행시키기 위한 메서드는 주석 처리를 하도록 하고, 그 다음에 이제 제대로 작동이 되는 지를 한번 판단해 보고자 합니다.




그런데 에러가 생기는 것을 확인할 수 있었습니다.



우선 def main()에서는 괄호안에 들어가 있는 self를 제거해 주도록 해야 합니다. 그리고 나서 그 다음에 여기서 이 메서드는 특정한 클래스 안에 들어가 있는 것이 아니기 때문에, 클래스명().메서드명() 이라는 식으로 만들어서 실행을 해야 하는 것 이었습니다.



이렇게 하는 것으로 먼저 gui를 띄우고 나서, RLTrader가 실행이 되는 것을 확인할 수 있었습니다. 이렇게 하는 것으로 어떻게 제 의도대로 나오는 것을 확인할 수 있었으며.....



이제는 위 스크린샷과 같이 카운터 갯수를 10개 미만에서 800개 초과로 만들어서 이 정도 이상 투자를 진행하게 되면 다시 로그아웃 기능이 없으니, 자식 프로세스를 종료하라고 합니다.




그런데 계속해서 로그인을 반복해서 하는 현상이 벌어져서, 우선 처음으로 시도한 것은 로그인을 하는 메서드를 위 스크린샷과 같이 RLTrader를 불러오는 메서드가 죽어있는 상태에서만 작동을 하도록 시킵니다.



그리고 나서 위 스크린샷과 같이 bool 형식의 변수를 먼저 선언해 주는데, 이 변수는 처음에 들어올 때는 True입니다. 이런 변수를 선언해 주는 이유는 첫번째 시도가 실패해서 계속해서 로그인이 되어서 입니다.



그리고 나서 이 메서드가 True일 경우에만 딱 한번 로그인이 실행이 되도록 하고, 그 외에 경우에는 다음부터는 로그인을 하지 않도록 만들어 줍니다.



이렇게 하는 것으로 pytrader2를 실행시켜 보면, 위 스크린샷과 같이 처음에만 로그인이 되고, 그 당음부터는 로그인을 하지 않는 것을 볼 수 있었습니다. 이렇게 하는 것으로 저를 골치아프게 만들던 문제를 해결할 수 있게 되었으며, 이제부터는 본격적으로 주식 인공지능의 모의투자에 들어갈 수 있도록 해 보겠습니다.

반응형