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

새로운 방식의 시도-벽에 부딪친 아이디어 구현

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

안녕하세요?

 

이제까지 QProcess를 이용해서 여러개의 로그인을 하기는 했지만, 이 방식으로는 제대로된 실시간 종목 스크리닝이 불가능하였습니다. 그래서 하는 수 없이 한번 로그인을 하고 여러개의 종목을 스크리닝하는 방법으로 가려고 하는데, 이 방식이 드디어 한계에 부딪쳤음을 알리고자 이번 포스팅을 올립니다.

 

먼저 위 스크린샷에서 나오는 것처럼 ActivateTrader 메서드에서 다시 number를 받는 것으로 방식을 바꾸어 주도록 합니다.

 

그리고 나서 Trade_Machine은 딱 한번만 객체화 시켜 주는 것으로 바꾸어 주도록 합니다. 이렇게 해서 이전까지 했던 방법에서 다시 예전것으로 돌아가고자 합니다.

 

그런데 이렇게 하고도 문제가 나오는데, 그게 무엇이냐 하면, PyQt를 사용하고 있는 클래스인 Kiwoom이 제대로 멀티 프로세스에서 병렬화 시키지 못하는 것 입니다.

 

정확히는 위 스크린샷에서 지정되는 부분이 문제인데, 진짜 문제는 이게 제가 만든 코드가 아니라, 멀티 프로세싱을 이루고 있는 코드라서 제가 쉽사리 손을 댈 수도 없다는 것 입니다.

 

 

그것도 문제가 된 것이 무슨 디버스 상에서 이야기 하는 것처럼 클래스가 튜플이라고 하는데, 이건 제가 아무리 봐도 모르겠습니다.

 

이래서 한번 찾아보니까, 싱글콘이 문제라고 하는 것을 볼 수 있었습니다. 이게 왜 문제인가 하면, 싱글톤이 한번에 하나만 만들어 지라고 있는데, 이걸 멀티 프로세싱까지 끌고 가는 것은 않 좋다는 것 입니다.

 

그래서 한번 위 스크린샷처럼 싱글톤으로 되어 있는 것을 해제하고서 한번 더 시작을 해 보도록 합니다. 이렇게 하면 상황이 나아지리라 생각을 했습니다만......

 

그리고 나서 위 스크린샷처럼 싱글톤이 문제가 된다면 제대로 txt파일이 생성이 될 것을 기대를 하고서 한번 작업에 들어가 보기는 보았습니다.

 

그런데 싱글톤이 문제가 아닌 것으로 보인느 것이, 여전히 Kiwoom이라는 클래스를 멀티 프로세싱이 어떻게 pickle이라고 해서 잡아내지 못한다 = 병렬화 시키지 못하는 것을 볼 수 있습니다.

 

그래서 한번 궁여지책으로 map을 imap이라고 가벼운 버젼으로 만들어서 한번 더 작동을 시켜 보도록 하였습니다. 이렇게 했더니........

 

어떻게 해서 작동을 하는 것을 볼 수 있기는 있었습니다. 다만 이렇게 하고서도 제대로 된 멀티 프로세싱의 증거는 나오지 않는 것을 볼 수 있었습니다.

 

결국 어디가 문제인가 하면, 이 Kiwoom이라는 클래스를 어떻게 가지고 오지 못하는 것이 문제라면 문제라고 할 수 있습니다. 그렇다고 해서 Kiwoom에 있는 PyQt를 제거하면, 제대로 Qt를 사용하지 못해서 키움증권의 Open API를 사용할 수 없게 됩니다. 이래서 이게 지금은 벽에 부딪친 상황입니다.

반응형