• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

Multiprocessing(4) - Sharing state 에서 공유가 안되는 원인

22.12.20 16:18 작성 22.12.20 18:46 수정 조회수 273

0

안녕하세요 강사님,

Sharing state에서 메모리 공유가 안되는 결과 값으로 질문이 많은것 같습니다. 그래서 강제로 with v.get_lock()을 설정해 주는 분들도 계시지만, 강사님 코딩 중에 for p in process: p.join() 부분의 위치가 잘 못 되어서 그런 문제가 발생 한 것 같습니다. 아래와 같이 코딩을 수정 하면, 메모리 공유가 잘 실행됩니다. 그런데 process.join()을 processes.append(p) 할때 마다 join을 하는게 아니라, 원래 강사님 코딩처럼 processes 리스트에 append가 다 끝난상태에서 join을 해 주는게 맞는것 같은데.. 그럴경우 결과 값은 공유가 풀린 상태가 된 결과 값이 나옵니다.스크린샷 2022-12-20 16.11.57.png1_3 강의 내용에는 x.start() 후 바로 x.join() 처리를 하셨는데, 스크린샷 2022-12-20 17.23.02.png 바로 처리하는게 맞다면, 굳이 리스트 설정 없이 아래 처럼 코딩을 하면 될 것 같습니다. 이 문제에 대해 강사님의 의견을 구하고자 합니다.스크린샷 2022-12-20 17.28.33.png

답변 1

답변을 작성해보세요.

0

안녕하세요.

확인을 해보니 말씀해 주신 부분이 맞는것 같습니다.

배열에 담지 않아도 p 생성시에 메모리 공유가 되는 것을 확인했습니다.

해당 부분은 수정해서 소스코드에 반영하도록 하겠습니다.

또, 다른 개선방안은 없는지도 확인할께요!

감사합니다.