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

QThread와 main 스레드간의 통신 연결-1-

by 인터넷떠돌이 2020. 2. 5.
반응형

안녕하세요?

 

원래는 이 일련의 포스팅은 원래 키보드나 마우스를 클릭할 경우 PyQt5로 만들어 놓은 GUI가 얼어버리는 - freezing이라는 현상이 벌어지는 것을 해결하기 위해서 시도가 되었습니다. 일단 이 일련의 작업이 헛다리를 짚은 것으로 끝이 나기는 났습니다만, 그래도 가치가 있는 기술을 익히는 데 성공했기 때문에, 일단 이 블로그에 기록으로 남기고자 합니다.

 

먼저 이 작업을 위해서 일단 메인이 되는 py파일을 복제해 보도록 합니다. 이렇게 함으로서 일단 작업을 하나 시작할 수 있게 됩니다.

 

그리고 나서는 QThread의 역할을 하게될 서브 스레드라고 해야 할까요? 메인이 되는 클래스를 하나 만들어 주도록 합니다. 그리고 나서 다음으로 해야 할 일은.........

 

위 스크린샷처럼 원래는 totalProcess를 진행상황을 알리기 위한 프로그레스 바의 최대와 최소값을 지정해 주는 메서드를 주석처리하고, 일단 새로 지정한 QThread를 실행시키도록 합니다.

 

 

그리고 나서 완전히 빈 클래스 변수 - 정말로 object가 들어가야 해서 문자열이나 숫자등이 들어가지 않은 빈 깡통 변수를 선언하고 싶으면 None이라거 지정을 해 주도록 합니다.

 

그리고 나서 다음으로 해야 할 것은 위 스크린샷처럼 None으로 선언이 된 변수들에다가 progress bar를 지정해 주는 것 입니다. 이렇게 해서 QThread에서도 어떻게 조종이 가능하지 않을까 했습니다.

 

그리고 나서 해당이 되는 메서드를 건드리게 되면 일단 시험적으로 what이라는 문자열이 출력이 되도록 만들어 주었습니다. 

 

이렇게 해서 일단 위 스크린샷에서 볼 수 있는 것처럼 제대로 작동이 되느냐 하면, 그건 또 아닌 것이, 일단 죽어라 찾아 보아도 what이라는 문구는 출력이 되지 않았습니다.

 

그렇다고 해서 GUI는 제대로 잡혔냐 하면, 그것도 아닌 것이 일단 아랫쪽 프로그레스 바는 거의 움직이지 않는 것을 확인할 수 있었습니다.

 

그리고 나서 다음으로 해야 할일은 위 스크린샷에서 볼 수 있는 것처럼 일단 while문으로 되어 있는 기존의 항목을 for문으로 바꾸어 주는 것으로 했습니다.

 

그런데 그렇게 하고서도 상황이 나아지지 않았습니다. 일단 1차 시도는 아무것도 되지 못하고 이래저래 불만족 스러운 상태로 끝이 나게 되었습니다. 그래도 일단 시작을 하기는 했었고, 이것은 이제 곧 이어지는 QThread로 만들어진 스레드와 메인 스레드간의 통신에 대해서 다루게 될 긴 포스팅 시리즈의 시작입니다.

반응형