안녕하세요?


주말에 잠시 대량으로 주식 데이터를 가져와야 하는 일이 있어서 잠시 중단을 하기는 했습니다만, 일단 pytrader를 자식 프로세스로 해서, 일정동안 TR을 조회하게 되면 자동으로 종료를 하게 되고, 이 종료가 된 시점에서 다시 실행을 시켜야 할 필요성이 있기는 있었습니다. 그래서 지난번에는 Qprocess를 이용해서 자식 프로세스를 실행시키는 것은 성공했습니다만, 문제는 어떻게 자식 프로세스에 데이터를 전달 하느냐 하는 것이 남아 있습니다.



일단 먼저 필요한 것이 지난번에 부모 프로세스에 toggle버튼을 만들어 주었으니, 실행을 시킨 버튼을 한번 더 누르면 이번에는 실행시킨 pytrader가 종료가 되어야 하는 차례입니다. 그래서 이를 위한 메서드를 별도로 만들어 줍니다.



그리고 여기서는 Qprocess().terminate()라는 명령어를 쓰면, 실행중인 자식 프로세스를 종료할 수 있기는 있었습니다. 이게 제대로 작동한다는 증거를 보여드리겠습니다.



위 GiF파일의 스크린샷을 보시면 알겠지만, 부모 프로세스를 실행시킨 다음에, pytrader작동이라는 붉은색 버튼을 누르면 pytrader가 작동이 되며, 부모 프로세스의 초록색으로 변한 버튼을 한번 더 누르면 pytrader가 종료가 되는 것을 확인할 수 있습니다.



다음으로는 위 스크린샷과 같이, 종목의 코드를 부모 프로세스에 입력하면, 이 내용이 그대로 self.라고 붙어서 메서드에서 메서드를 넘나들 수 있는 변수에 들어갈 수 있도록 조치를 취해 줍니다.




그리고 일단 위 스크린샷과 같이 인터넷을 뒤지다 보니까, 한번 힌트가 될만한 내용을 발견하기는 발견했습니다. 그래서 일단 위 스크린샷처럼 Qprocess().readyRead().connect()라는 형식을 사용해 보도록 합니다.



일차적으로 위 스크린샷과 같이 코딩을 하니까, 부모 프로세스가 문제없이 실행이 되는 것 까지는 확인할 수 있기는 있었습니다.



다음으로는 제대로 종목코드를 부모 프로세스에서 자식 프로세스로 전달하기 위해서 먼저 위 스크린샷과 같은 식으로 먼저 스크립트가 시작하자 마자 빈 변수라고 선언을 해서, 아무것도 입력이 되지 않았을 경우에 에러가 뜨는 것을 막기 위해서 입니다.



다음으로는 위 스크린샷과 같이 txt파일을 만들어 주는 방법을 사용하도록 합니다. 일단 제가 아무리 봐도, Qprocess상에서 어떻게 데이터를 주고 받는지에 대해서 이해가 도저히 되지 않았습니다. 그리고 이걸 이해한다고 시간은 너무 걸리고 해서 하는 수 없이 제가 제대로 할 수 있는 방법을 사용해 보고자 합니다.




다음으로는 데이터 베이스를 지정해 달라는 식으로 만들어 주어서, 직접 데이터 베이스 파일의 경로와 이름을 입력하지 않고도, 사용자가 편하게 지정을 할 수 있도록 만들어 줍니다.



그리고 종목코드와 함께 2개 이상의 데이터가 나왔기 때ㅑ문에, 위 스크린샷과 같이 절대로 쓰이지 않을 문자열을 중간에 넣어 주어서 자르기 좋도록 만들어 줍니다.



일단 부모 프로세스 상에서는 제대로 위 스크린샷과 같이 데이터 베이스를 선택하는 창이 나오는 것을 확인할 수 있기는 있었습니다. 이제 다음 포스팅에서는 이게 자식 프로세스에서도 제대로 동작하는 것을 보여주고자 합니다. 그럼 이번 포스팅은 여기까지만 하도록 하겠습니다.

+ Recent posts