• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

메인 프로세스의 실행 흐름에 대해 궁금한 것이 있습니다.

21.12.14 17:16 작성 조회수 134

1

안녕하세요 선생님

 

py_ad_2_6_1.py를 실행하면서 생긴 궁금증이 있습니다.

제가 임의로 다음과 같이 process.join() 뒤에 프린트 문을 넣었습니다.

    for process in processes:
        process.join()
        print('s', end=' ')

 

그래서 실제 어떻게 찍히는 지 봤더니 다음과 같았습니다.

Process ID: 7380, Process Name: 10
Result : 100000000
s s s s s s s s s s s s s s s s s s s s --- 4.202337026596069 seconds ---

즉 모든 서브프로세스(여기서는 20개 설정했습니다.)가 작업을 끝마치고 join for 문이 돈 거 같습니다. s가 그 이후에 쭈르륵 프린트 된 것을 보면요.

근데 join을 했기 때문에 메인 프로세스가 다음 단계로 넘어가지 않고 기다리는 것 같은데 어떻게 바로 s가 찍히지 않고 join을 실행할 수 있었는지 궁금합니다.

모든 서브 프로세스에 join을 걸기 위해선 print(s)를 반드시 하고 넘어가야 하는 것 처럼 보이기 때문입니다.

감사합니다.

 

답변 1

답변을 작성해보세요.

0

네 보통은 프로세스는 병렬로 동시에 처리하는 구문으로 사용해여~~

join을 건다면 다른 프로세스가 실행 종료 될 때까지 임시 대기 이므로,

경우에 따라서 결과가 상이한 값이 나오는게 맞아여