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

자식 프로세스에 정보를 전달하기 위한 연습-4-

by 인터넷떠돌이 2019. 1. 18.
반응형

안녕하세요?


지난번 포스팅에서 어떻게 자식 프로세스가 부모 프로세스에서 보내온 내용을 입력받아서 출력하는 것 까지는 보여 주었습니다. 그런데 제 경우에는 exe로 빌드한 프로그램에서 RLTrader가 작동하기 때문에, exe로 빌드한 프로그램에까지 이 정보를 전달할 수 있는지에 대해서 한번 알아볼 필요가 있다는 생각이 듭니다.



그래서 먼저 exeoperation이라는 예전에 만들어 놓은 프로젝트를 열어서, 여기에다가 main2.py라는 새로운 파이썬 스크립트 파일을 만들어 주도록 합니다.



그리고 나서 위 스크린샷처럼 input()된 데이터를 특정한 문자열로 나누어서, 차례차례 보여주는 것으로 만들어 보도록 합니다.



그리고 난 다음에 아나콘다 프롬프트를 실행시켜서, 먼저 exeoperation의 가상환경을 실행시켜서 pyinstaller로 빌드할 준비를 하도록 합니다.



이번에도 같은 결과를 얻을 수 있도록, pyinstaller --noconfirm --log-level=WARN --oenfile --nowindow main2.py라는 식으로 명령어를 쓰도록 합니다.



잠시만의 시간이 걸린 다음에, 위 스크린샷처럼 main2.exe라는 식으로 빌드가 되어 있는 것을 볼 수 있었습니다. 이 파일을 복사해서 이제 붙여넣기 하도록 합니다.




연습을 하고 있는 프로젝트의 폴더에 붙여넣기를 하는 이유는, 바로 작업을 하기 편하라고 임의로 지정을 하는 것일뿐, 큰 의미가 없기는 없습니다.



이제 부모 프로세스의 내용을 변경해 보도록 합니다. 이렇게 경로를 편하게 바꾸어 놓았기 때문에, 그냥 main2.exe로 바꾸어 주기만 하면 됩니다.



그런데 생각지 못한 에러가 발생을 하는 것을 볼 수 있었습니다. 이 에러가 어디서 나왔는지 한번 살펴 보니......



위 스크린샷처럼 앞에 python이라고 붙어 있어서 에러가 발생한 것 이었습니다. 스크립트의 경우에는 python을 필수적으로 같이 실행시켜 주어야만 하지만, 아예 파이썬이 설치되지 않은 환경에서도 실행을 하기 위해서 만들어 놓은 exe파일은 그럴 필요가 없는데 일으켜서 생긴 문제입니다.



그리고 그 결과 모든 결과가 입력한 대로 차례차례 나오는 것을 확인할 수 있었습니다. 이렇게 하는 것으로 이제 부모 프로세스에서 입력한 값이 자식 프로세스가 exe로 빌드한 파일이라도 나온다는 것을 알 수 있었습니다. 문제는 이렇게 그냥 내 보내는 것만이 아니라 연산을 해야 하는데, 그게 가능한가 여부입니다.




그래서 이번에는 부모 프로세스에서 입력되는 값을 모두 숫자형식의 문자로 바꾸어 주도록 합니다. 이 값들이 들어가서 숫자로 변환이 되어서 자식 프로세스에서 계산이 되는지 여부를 알아보는 것 입니다.



다음으로는 자식 프로세스에 가서, 위 스크린샷처럼 받은 데이터를 하나하나 분리해서 먼저 실수(float)으로 바꾸어 준 다음 정수(int)로 바꾸어 주도록 합니다. 그리고 더하기를 각각 해 주도록 합니다.



그리고 당연하다면 당연하게도 아직 exe파일로 빌드되지 않았으니, pyinstaller --noconfirm --log-level=WARN --onefile --nowindow main2.py라고 입력을 해서 exe파일로 만들어 줄 준비를 합니다.



그리고 기존의 exe프로그램은 제거를 하도록 하고, 새로 만든 main2.exe를 가지고 오도록 합니다. 역시 이렇게 하는 이유는 타이핑을 다시 하지 않아도 되기 때문입니다.



결과입니다. 뒤에 \r\n이라는 것이 붙기는 하지만, 이건 어디까지나 결과가 출력되면서 그걸 받는 과정에서 나온 것이라고 생각이 되며, 그걸 제외하고는 제대로 된 계산이 제 의도대로 이루어 졌다는 것을 볼 수 있었습니다. 이렇게 하는 것으로 보아서 이제는 pytrader에서 RLTrader로 정보를 보내서 서로 상호작용을 하는 것이 가능하겠다는 생각이 듭니다.

반응형