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

QThread를 향한 공부-3

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

안녕하세요?

 

이번 포스팅부터는 그냥 따라하기가 아니라, 직접 연습해 보면서 이 QThread에 관한 기능을 하나하나 익혀보는 시간을 가지고자 합니다. 일단 이번 포스팅에서는 지난번 처럼 가장 메인이 되는 GUI의 스레드에서 +1만이 아니라 여러개의 스레드를 동시에 실행시켜 보는 시도를 할까 합니다.

 

일단 연습을 해보기 위해서 기존에 만든 multithread를 복사해서 붙여넣기 해 주도록 합니다. 그러면서 이름은 한번 바꾸어 주도록 하는 것입니다.

 

그리고 나서 위 스크린샷처럼 일단 progress라는 글귀만 실행이 되면 나오도록 하고, 나머지 쓸데없는 기능은 일단 빼놓도록 했습니다.

 

그리고 나서 위 스크린샷처럼 기본적으로 있는 카운터와 다른 스레드를 실행시키기 위한 기본적인 조건만 갖추고 나서 제대로 되는지 테스트 해 보도록 합니다.

 

일단 여기까지는 제대로 작동이 되는 것을 확인할 수 있었습니다. 그래서 일단계는 무사히 통과한 것으로 생각이 되지만, 그래도 문제는 남아 있습니다.

 

 

첫번째 시도로는 위 스크린샷처럼 일단 worker라는 변수에다가 여러개의 Worker를 만들어 주는 것으로 시도를 한번 해 보았습니다.

 

그리고 그  결과는 보기좋게 실패라고 해야 할까요? 일단 프로그램이 에러를 일으켜서 제대로 작동이 되지 않는 것을 확인할 수 있었습니다.

 

그리고 나서 다음으로 해야 할일은 위 스크린샷에서 볼 수 있는 것으로 2번째 클래스를 만들어 주어서 시도를 한번 해 보는 것 입니다.

 

그리고 나서 같은 이름의 클래스만 객체화 시킨 것이 아니라 그냥 이번에는 다른 이름의 클래스를 옆에 쓰는 식으로 만들어 주도록 합니다.

 

이것도 제대로 실행이 되지 않고, 그냥 에러가 나는 것을 확인할 수 있었습니다. 이렇게 해서 보면, 제대로 작업이 되지 않는 것이라는 생각이 들기도 합니다.

 

그래서 한번 정보를 구글에서 검색해 보니까, 위 스크린샷처럼 일단 먼저 해야 할일은 QThreadPool뒤에다가 globalInstance()라는 명령어를 하나 더 붙이는 일인데, 이건 제가 테스트 해 보지는 않았지만, 일단 붙여 주는 것으로 했습니다.

 

다음으로 해야 할일은 for문을 이용해서 한번 다중으로 프로세스를 실행시키는 것입니다. 일단 이게 for문이라서 동시에 실행이 되는 것인지 의문이기는 합니다만, 해보기는 해보도록 합니다.

 

그리고 나서 다음으로 해야 할일은 위 스크린샷에서 볼 수 있는 것처럼 처리 결과를 보는 것인데, 일단 progress 4개는 동시에 나타났고, 최대 스레드 갯수가 4개이다 보니 5번째 스레드는 4개의 이전 스레드가 끝난 다음에야 나오는 것을 확인할 수 있었습니다. 일단 이렇게 해서 다중으로 스레드를 동시에 실행시키는 것은 되지만, 좀 더 확인해 봐야할 사항이 많이 남아 있습니다.

반응형