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

QThread를 향한 공부-2-

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

안녕하세요?

 

이번 포스팅에서는 지난번 포스팅에 이어서 QThread를 공부해 보기 위해서 올리는 포스팅입니다. 일단 지난번 포스팅에서 어떻게 다른 스레드를 실행시키는 것 까지는 성공했는데, 이번 포스팅에서는 어떻게 추가적인 내용을 가지고 실습해본 내용에 대해서 다루어 볼까 합니다.

 

그리고 나서 다음으로 해야 할일은 위 스크린샷에서 볼 수 있는 것처럼 __init__를 이용해서 일종의 데이터를 받아와서 QRunnable을 생성하는 작업에 대해서 일단 다루어 볼까 합니다.

 

일단 이런 상황에서 실행을 시켜 보면, 위 스크린샷과 같이 의미를 알 수 없는 빈 데이터 더미들이 생성이 되는데, 이게 나중에 무슨 역할을 하는지는 모르겠습니다.

 

그리고 나서 다음으로 위 스크린샷처럼 self.fn을 추가시켜 주고 나서, 여기에 받아온 데이터를  입력한 다음 print()함수로 표시하도록 만들어 주었습니다.

 

 

다음으로 해야 할일은 위 스크린샷에서 보이는 것처럼 execute_this_fn이라는 메서드를 만들어 주고, Worker의 생성에 이 메서드명을 적어주는 것인데, 일단 제가 정말 이해가 되지 않은 부분이기도 합니다.

 

일단 실행을 시켜보면, 위 스크린샷처럼 나오는데, 아마도 Worker()의 ()안에 들어간 메서드에서 나오는 메세지를 받은 다음에, 이걸 QThread에서 따로 넘겨줄 수 있는 것으로 보입니다.

 

그리고 나서 위 스크린샷처럼 일단 하나를 만들어 보기는 보는데, 이번에는 QThread에서 나오는 시그널을 가지고서 이를 바탕으로 해서 스레드에서 나오는 신호를 GUI에서 처리하는 식으로 할 것인데, 여기서 중요한 것이 하나 있습니다. 바로 QRunnable은 QObject에서 나온 것이 아니기 때문에 이 신호를 QRunnable안에서 만들 수 없어서 하는 수 없이 새로 클래스를 만들어서 이를 처리해야 한다는 것 입니다.

 

그리고 나서 Qrunnable에서는 위 스크린샷과 같은 내용을 집어 넣어 보도록 합니다. 왜 니렇게 하느냐 하면 이후에 이를 전체 프로세스의 진행을 나타내주는 척도로 사용할 수 있기 때문입니다.

 

그리고 나서 다음으로 해야 할일은 QThread에 보내는 내용에 대한 것인데, 일단 보내기는 보내는데, 내용을 한번에 보내지 않고 1초씩 끊어서 보내도록 합니다.

 

다음으로 해야 할일은 이 신호들이 오면 어떤 메서드와 연결이 될 것인지에 대해서 미리미리 정해 주도록 하는 것 입니다.

 

일단 이렇게 하는 것으로 우선 위 스크린샷처럼 프로그래스의 진행을 알여주는 내용과 스레드에서 오는 신호를 받아서 처리하는 것 까지 따라하기는 성공한 듯 보입니다. 다만, 이런다고 해서 제가 제대로 이걸 다루는 것은 아니고 몇가지 연습을 해봐야 합니다. 그래서 다음 포스팅부터는 연습한 내용을 가지고서 한번 올려 보도록 하겠습니다.

반응형