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

QThread의 적용 part3

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

안녕하세요?

 

지난번 포스팅에서 너무 길어지는 감이 있어서 끊었어야 했는데, 아무튼 간에 끊은 것은 끊은 것이고, 주식의 기본정보를 가지고 오는 작업을 했는데, 이 작업에서 어디가 어떻게 고쳐서 성공을 했는지 모르는 사태가 벌어졌습니다. 그래서 바꾼 것을 하나 하나 고치면서 도로 추적하는 작업을 해 보고자 합니다.

 

일단 제대로 위 스크린샷처럼 어떻게 해서 성공을 하는데, 싱글톤으로 바꾸었어도 문제는 없다는 것을 알 수 있었습니다. 그럼 어디가 문제일까요?

 

그 다음으로는 QRunnable이 제대로 문제인가 싶어서 한번 원래대로 돌려놓고 나서, 여기서 어디가 어떻게 된 것인지 알아보고자 합니다.

 

이렇게 하고도 제대로 실행이 되는 것을 또 확인할 수 있었습니다. 아무래도 너무 많은 곳을 바꾼 것이 아닌가 싶기도 하지만, 아무튼 일단 계속해서 찾아 보도록 합니다.

 

다음으로는 위 스크린샷처럼 이 @를 써서 붙여놓은 데코레이터가 수상하기는 수상합니다. 처음에는 이게 뭐 별것인가 싶은 생각이 들었습니다. 일단 이건 건드리지 않기로 했습니다.

 

 

일단 다시 QRunnable이 되었으니, 다시 처음으로 돌아가서, 도로 MainWindow를 작동시키는 방향으로 가도록 해 보았습니다.

 

그런데 이렇게 하고도 일단 제대로 작동을 되는 듯 합니다. 다만 위 스크린샷처럼 전에는 없던 에러가 발생한 것 같은데, 이 에러는 에러고 어디가 문제였는지 찾아야 합니다.

 

그래서 다음으로는 어디서 중복으로 요청한 것이 있어서 이런 일이 벌어진 것인가 해서, 한번 마디마디 마다 표시를 해 놓았습니다.

 

일단 지난번 에러의 원인은 다시한번 시도를 해보니까 @를 이용한 데코레이더가 run()위에 있어서 생긴 에러였습니다. 이제 데코레이터도 없는데, 문제는 이미 한번 요청이 된 데이터가 다시 요청이 되는 사태가 벌어지고 있습니다.

 

그래서 어디가 문제인지 가만히 보니, 위 스크린샷처럼 원래는 run이 있었는데, 문제는 QRunnable이 실행되면 run이 자동으로 실행이 된다 = 같은 메서드가 2번이나 실행이 되어서 발생하는 문제였습니다. 그래서 아예 runningMan으로 바꾸어 주도록 했습니다.

 

이렇게 하자 두번씩이나 주식 기본정보를 요청하는 일은 없어졌습니다. 다만 run메서드가 없다 보니 이에 관한 에러 메세지가 뜨는 것을 확인할 수 있었습니다.

 

그래서 run메서드에서는 위 스크린샷과 같이 몇번째 프로세스를 진행한 것이 맞는지 알아보는 정도로만 했습니다. 이렇게 하고서 이제 다음의 작업을 하도록 합니다.

 

이렇게 해서 제대로 작업을 알아보는 것에는 성공했습니다. 이제 문제가 있습니다. 어디가 문제인가 하면, 먼저 이게 원래 원하는 것은 멀티 스레드인데 지금은 멀티가 아닙니다. 그리고 다음으로 로그인을 스레드 안에서 같이 하고 있는데, 이에 대해서 개선이 가능한지 알아볼 필요성이 있습니다.

반응형

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

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