안녕하세요?
지난번 포스팅에서 어떻게 해서 이래저래 여러개의 프로세스를 동시에 실행시킨 것을 확인할 수 있었습니다. 그런데 문제는 여기에 데이터를 전송해야 하는 문제가 있습니다. 이 문제를 해결하기 위해서 일단 이번 포스팅에서 이래저래 많은 시도를 했는데, 그 내용을 한번 올려보고자 합니다.
먼저 위 스크린샷에서 볼 수 있는 것처럼 일단 윈도 운영체제를 위해서 코드를 추가해 주도록 합니다. 그리고 나서 Popen에 새로운 옵션을 추가해 주도록 합니다.
그리고 나서 일일히 communicate하는 함수를 사용해 주도록 합니다. 이렇게 해서 무언가 변화-통신이 일단 부모 프로세스에서 자식 프로세스로 전달이 될 것을 기대를 했습니다.
결과부터 먼저 이야기를 한번 하자면, 일단 절반의 성공으로 우선 데이터를 제대로 전달이 되기는 되었습니다. 그런데 문제는 여러개 뜨던 자식 프로세스의 윈도우가 겨우 1개만 뜨는 것을 확인할 수 있었습니다.
먼저 위 스크린샷에서 볼 수 있는 것처럼 기존에 with문으로 시작이 되는 io.open을 사용하는 통신을 그냥 주석처리 하도록 합니다.
그리고 나서 다음으로 io모듈을 자식 프로세스에서도 사용할 수 있도록 한번 import를 해 주도록 합니다. 이렇게 하는 것으로 일단 작업이 일단락 되었습니다.
그러고도 작업이 잘 되지 않아서, 위 스크린샷에서 볼 수 있는 것처럼 데이터를 받기 위해서 그냥 input()만 할 것이 아니라 이렇게 바꾸어 주기도 합니다.
이렇게 해서 10개의 프로세스가 한꺼번에 실행이 되는 것을 확인할 수 있기는 있었습니다. 그런데 문제가 있다면 있는 것이, 제대로 데이터가 부모 프로세스에서 자식 프로세스로 전달이 된 게 맞는지 의문이 됩니다.
결국 결론을 내리자면, 저 communicate를 주석처리 해서 어떻게 하려고 해도, 이걸 주석처리 해 버리면, 문제가 전혀 실행이 되지 않는다는 문제가 발생하는 것 입니다. 이래서야 우왕좌왕인 상황이 이어지는 것인데, 계속해서 해결책을 찾도록 해 보겠습니다.
'무모한 도전-주식 인공지능 만들기' 카테고리의 다른 글
멀티 프로세스를 이용한 병렬처리에 들어가 보기 -4- (0) | 2020.02.27 |
---|---|
멀티 프로세스를 이용한 병렬처리에 들어가 보기 -3- (0) | 2020.02.25 |
멀티 프로세스를 이용한 병렬처리에 들어가 보기 -1- (0) | 2020.02.23 |
초기 테스트에 멀티 스레드를 적용해 보기 -3- (0) | 2020.02.22 |
초기 테스트에 멀티 스레드를 적용해 보기 -2- (0) | 2020.02.21 |