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

QThread의 적용 part2

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

안녕하세요?

 

지난번 포스팅에서 어떤 이유가 없는-그냥 원인을 발견하지 못한 것 때문에 생긴 것으로 인해서 어쩔 수 없이 제대로 종목에 대한 기본 정보를 받아오지 못하는 것을 볼 수 있었습니다. 이번 포스팅에는 그 원인을 파악하기 위해서 이런저런 시행착오를 하는 과정을 보여 드리고자 합니다.

 

먼저 위 스크린샷처럼 screenNo가 겹쳐져서 생긴 에러가 아닌가 하고 처음에는 의심을 했습니다. 충분히 있을 수는 있다는 생각이 들었습니다.

 

하지만 결과는 이것도 제대로 된 것이 아니라 다른 데 있었습니다. 그냥 프로그램을 강제로 종료할 수 밖에 없기는 없었습니다.

 

다음으로는 같은 클래스 안에서 로그인이 되지 않아서 생긴 문제가 아닌가 하는 생각이 들었습니다. 그래서 이런 문제를 해결하기 위해서 위 스크린샷과 같이 같은 QRunnable에서 같이 로그인을 하도록 만들었습니다.

 

그리고 나서 위 스크린샷과 같이 보기좋게 빗나간 것을 확인할 수 있었습니다. 아무튼 간에 이렇게 된 김에 계속해서 다른 곳에 원인이 있는지 계속해서 찾아보도록 합니다.

 

 

다음으로 의심을 한 것은 싱글톤이 되어서-Kiwoom 클래스를 PyQt의 싱글톤으로 만들어서 이런 문제가 생긴 것이 아닌가 하는 생각이 들어서 도로 원래의 PyQt5 클래스로 돌려 놓았습니다.

 

하지만 그러고도 소용이 없어서 이번에는 다시금 위 스크린샷처럼 원래대로 돌려놓고 나서, 여기다가 몇 번째 스레드인지 알아보게 만들었습니다.

 

저렇게 한 이유가 바로 ohlcv라는 주식의 기본정보를 저장하는 딕셔너리가 같은 것이 되어서 이런 것인가 했는데, 일단 다른 딕셔너리로 만드는 것도 실패고, 알아보니 이건 아닌것 같기도 했습니다.

 

그래서 이 QRunnable이 문제인 것인가 해서, 이번에는 위 스크린샷처럼 그냥 클래스로 만들어 보는 시도를 하기는 했습니다.

 

그래도 잘 안되어서 이번에는 위 스크린샷처럼 한번 run에 있는 내용을 다 주석처리를 한 다음에 다시금 시도를 해 보도록 했습니다.

 

그리고 나서 그냥은 안되어서 실행을 시킬때 대놓고 Worker()라고 해놓고서 실행을 시키도록 했습니다. 이렇게 해서 무슨 차이가 날까 싶기는 했습니다.

 

그런데 어디가 어떻게 개선이 된 것인지 모르겠습니다만, 일단 CommRqData가 제대로 작동을 하는 것 까지는 확인을 할 수 있었습니다.

 

그래서 한번 이번에는 다시 싱글톤으로 돌려서도 제대로 되는지 한번 알아보고자 합니다. 왜 이렇게 하느냐 하면, 이게 싱글톤이 아니면, 기본적으로 한번 로그인을 해서 여러 종목의 스크리닝을 한다는 것이 매우 힘들어 지기 때문입니다. 일단 여기서 내용을 더 이어야 하지만, 포스팅이 너무 길어지는 감이 있어서 여기서 한번 끊고자 합니다.

반응형

'무모한 도전-주식 인공지능 만들기' 카테고리의 다른 글

QThread의 적용 part4  (0) 2019.07.28
QThread의 적용 part3  (0) 2019.07.28
QThread의 적용 part1  (4) 2019.07.27
QThread를 향한 공부-final-  (2) 2019.07.26
QThread를 향한 공부-4-  (0) 2019.07.26