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

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

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

안녕하세요?


지난번 포스팅에서 말했던 것처럼, 일단 노트패드에 문자열을 추가하는 것은 너무 멀리 돌아가는 것 같아서, 이번에는 새로운 파이썬 파일을 만들어서 이걸 바탕으로 해서 실행을 시켜 보도록 해 보고자 합니다.



먼저 위 스크린샷처럼 먼저 새로운 파이썬 파일(*.py)을 만들어 주도록 합니다. 이름은 일단 직관적으로 알 수 있도록 한번 chilid라고 지어 주도록 합니다.



일단 코딩을 시작하는데, 먼저 그냥 data라고만 하면 알아서 받겠지라고 생각했는데, 역시나 라는 말이 나오면서 이게 정의되지 않았다고 일단 에러가 뜨는 것을 볼 수 있었습니다. 그래서 그냥 print('data')라고만 지어 주도록 했습니다.



다음으로는 main.py에서 위 스크린샷처럼 기존에는 notepad.exe라고 있던 것을 그냥 child.py라고 대체해 주도록 해 보도록 합니다.



그런데 위 스크린샷과 같은 에러가 뜨는 것을 볼 수 있었습니다. 이게 왜 이러는 것인지 저는 처음에는 몰라서 많이 헤메게 되었는데, 알고보니.......




에러의 이유는 바로 실행파일이 있는 경로를 입력한다는 것을 까먹어서 생긴 문제였습니다. 그래서 이 문제를 해결하기 위해서 위 스크린샷과 같이 경로를 일일히 만들어 주도록 합니다.



그런데 이번에는 다른 종류의 에러가 나오는 것을 볼 수 있었습니다. 이번 에러에 대해서는 당장은 알 수 없었기에, 에러 메세지를 복사한 다음 구글에서 검색을 해 보았습니다.



일단 먼저 해야 할 일은 유니코드에 대한 문제인데, 이 문제는 위 스크린샷과 같이 문자열 앞에 r을 붙이는 식으로 해결이 가능합니다. 이게 아니라면, 절대 경로로 바꾸어 주어야 하는 문제가 있습니다. 문제는 이러고도 제대로 된 프로그램이 아니라는 식으로 실행이 안되는 것을 볼 수 있었는데, 그 이유가 황당하게도, 제가 실행시키는 것은 파이썬 스크립트가 아니라, 파이썬이기 때문에, 스크립트와 함께, 앞에 python이라고 붙여 주어야 했습니다.



이렇게 하자 이번에는 이렇게 main.py,에서 실행이 순조롭게 실행이 되는 것 까지는 확인을 할 수 있기는 있었습니다.그래서 이제는 다음 단계로, 한번 출력을 확인해 볼 수 있는지에 대해서 들어가 보아야 했습니다.




먼저 print()함수를 사용해서, 위 스크린샷과 같이 stdout이라고 해서, 자식 프로세스가 내 보내는 출력과 stderr이라고 해서 자식 프로세스에서 발생한 에러를 출력해야 합니다. 먼저 위 스크린샷과 같이, 일단 아무것도 없어서 안 나올 것을 대비해서 중간에 중간선을 만들어 놓도록 합니다.



일단 위 스크린샷처럼 'data'라고 했는 data가 출력이 된 것으로 보이기는 합니다. 물론 이게 진짜로 출력이 된 것이 맞는지 아닌지 확인을 해 보아야 하는 필요는 있습니다.



먼저 위 스크린샷처럼 그냥 data라고 있던 것을 data0001이라고 하는 식으로 바꾸어서 놓도록 합니다. 그리고 나서 main.py로 돌아거서 파이썬을 실행시켜 보도록 합니다.



이제는 제대로 제 의도대로 나오는 것을 확인할 수 있었습니다. 이렇게 해서 어떻게 stdout이라는 것을 통해서 한번 자식 프로세스에서 보내는 출력은 확인할 수 있었습니다. 그런데 문제가 있는데, 어떻게 부모 프로세스에서 자식 프로세스로 데이터를 전달하는 것은 가능한데, 자식 프로세스에서 어떻게 받느냐 하는 문제가 이제 남아 있습니다.

반응형