인프런 커뮤니티 질문&답변
메인 프로세스의 실행 흐름에 대해 궁금한 것이 있습니다.
작성
·
196
1
안녕하세요 선생님
py_ad_2_6_1.py를 실행하면서 생긴 궁금증이 있습니다.
제가 임의로 다음과 같이 process.join() 뒤에 프린트 문을 넣었습니다.
그래서 실제 어떻게 찍히는 지 봤더니 다음과 같았습니다.
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을 건다면 다른 프로세스가 실행 종료 될 때까지 임시 대기 이므로,
경우에 따라서 결과가 상이한 값이 나오는게 맞아여




