안녕하세요?

 

지난번 포스팅에서 공유할 정보는 첫번째 스레드에서 가지고 오는 것으로 처리를 하였고, 다음으로 해야 할일은 이제 데이터를 저리하는 과정에 왔다고 해야 할까요? 원래는 한개의 메서드에 있던 여러개의 기능들을 나누어서 다루다 보니, 이런 일도 생기는 모양입니다.

 

일단 먼저 해야할 일이 하나 있습니다. import 명령어를 써서 sqlite3와 pandas를 가지고 오도록 하는 것 입니다. 왜냐하면 이 라이브러리들이 중요하게 쓰이는 메서드이기 때문입니다.

 

그리고 나서 데이터를 처리하는 과정을 거치기 위해, 일단 이 메서드를 붙여넣기 하고, 이제 runningMan에서 이를 실행하도록 해야 합니다.

 

그런데 실행을 하자마자 위 스크린샷과 같은 에러를 만나고 말았습니다. 이래서야 이걸 어떻게 제대로 쓴다고 말할 수 있는지 의문이라는 생각이 듭니다.

 

그래서 다음으로는 위 스크린샷처럼 어디서 에러가 났느냐 했더니, item_count2라고 해서, 보유주식의 정보를 가지고 와서, 이 정보가 얼마나 있는지 알아보는 과정을 거쳐야 하는데, 그걸 하지 않아서 생긴 에러였습니다.

 

 

그리고 나서 어디가 또 문제인가 했더니, 위 스크린샷처럼 Kiwoom.py에 있는 트리거가 하나 초기화 되어야 하는데 이게 되지 않아서 생긴 문제였습니다.

 

이제서야 4번째 스레드까지 제대로 작동을 하는 것을 확인할 수 있었습니다. 일단 여기서 Average_returning까지 보내는 데이터는 제대로 완성이 되었다는 것을 확인할 수 있었습니다.

 

그리고 나서 다음으로 필요한 라이브러리는 subprocess이기 때문에, 일단 이 라이브러리를 import해 오도록 합니다. 그리고 나서 다음으로 할일은.......

 

일단 만약을 위해서 기존에 만들어 주었던 Average_returning2.py를 복사해서 가지고 오도록 합니다. 지금 당장은 이걸 쓰겠다는 것은 일단 아닙니다.

 

그런데 계속해서 Average_returning에 계속 데이터를 보내면 2번재 스레드이후에 3번재 스레드에서 에러가 계속해서 나는 것을 확인할 수 있었습니다. 그래서 아예 만드는 스레드를 2개로 이번에는 줄여 보았습니다.

 

이렇게 해서야 이제서야 중간에 멈추는 현상없이 두뇌역할을 하는 py파일에 데이터를 전달하고, 이를 받아서 처리하는 과정을 거치는 것을 확인할 수 있었습니다.

 

그리고 나서 이제는 지쳐오기 시작해서 위 스크린샷처럼 이후의 과정을 처리하기 위한 메서드를 한꺼번에 복사해서 붙여넣기 하였습니다.

 

이렇게 해서 일단 위 스크린샷처럼 단 2개의 스레드만이 생성되어서 작동을 하는 것에는 성공할 수 있었습니다. 다만 이렇게 해서도, 제대로 된 작업이 되는 것인지.... 그리고 처음에 기대한 것처럼 수많은 스레드를 사용하려고 했습니다만, 그건 되지 않는 것을 확인할 수 있었습니다.

'무모한 도전-주식 인공지능 만들기' 카테고리의 다른 글

QThread의 적용 part9  (0) 2019.07.29
QThread의 적용 part8  (3) 2019.07.29
QThread의 적용 part7  (6) 2019.07.29
QThread의 적용 part6  (4) 2019.07.28
QThread의 적용 part5  (0) 2019.07.28
QThread의 적용 part4  (0) 2019.07.28
  1. 호바드 2020.02.29 15:36

    if not self.number == 1:
    self.item_count2 = item_count3
    에서 "item_count3"가 중간에 갑자기 나오는데 이상합니다.
    전에 정의되거나 사용된 적이 없는 변수 같습니다...

    그리고,
    self.K.trigger03 = False
    이 부분은 어디 부분을 얘기하는건지 갑작스럽게 나와서 이해가 안됩니다.

    그래서 그런지, "I am Running 1" 까지 표시되고,

    kiwoom
    I am Running 1
    0 this is result of commRqData
    before event loop end
    _receive_tr_data
    opt10001_req this is rqname
    True this is trigger03
    False
    001

    Process finished with exit code -1073740791 (0xC0000409)

    이렇게 더이상 돌지를 못하네요..

    아래부분을 막으면 "I am Running 4"까지 갑니다...
    #if not self.number == 1:
    # self.item_count2 = item_count3
    #self.DataProcessing()

    • 안녕하세요?

      가지가지 일이 있어서 답글이 늦었습니다. 일단 self.K.trigger3는 K가 kiwoom.py를 개체화 시킨 겁니다. 거기에 있는 변수를 다루기 위해서 만드는 겁니다.

      그리고 item_count3는 global변수 입니다.
      이건 아랫쪽에 가야 정리가 되는데, 혹시 이에대한 이해가 안되시면 자세한 설명을 나중에 포스팅을 할애해서 드릴까요?

  2. 호바드 2020.03.07 21:12

    이 부분은 어떻게 넘어 갔습니다. 감사합니다.

    • 안녕하세요?

      어쩌다가 예약발행만 걸어놓고서 이래저래 신경을 잘 쓰지를 못했습니다. 그나저러나 구독자에서 사라진 것 때문에 잠시 어떻게 되었나 하고 걱정했었습니다.

  3. 호바드 2020.03.29 18:44

    안녕하세요?
    앞부분 반복학습하다가 다행히도 많은 도움을 주셔서.. 다시 여기까지 따라왔는데요..
    좀 이상한 부분이 있습니다...

    if not self.number == 1:
    self.item_count2 = item_count3

    여기서 "self.item_count2"는 self.number가 "1"일때만 보유주식수를 가져오도록 했기 때문에 1이 아닐때는 보유주식수가 아직 값이 없는 상태인데.. 갑자기 "item_count3"으로 치환한다고 나와서.. 당황스럽습니다....
    "item_count3"는 어디서 온 걸까요?

    확인 좀 부탁드립니다~

    • 안녕하세요?

      어찌 하다보니 많이 답글이 늦어졌는데, 이제부터 본격적인 정리해서 올리기에 들어갑니다.
      정리글을 따라오시면 어떠실까요?

+ Recent posts