인프런 커뮤니티 질문&답변

nathan님의 프로필 이미지
nathan

작성한 질문수

고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)

멀티프로세싱 관련 질문

해결된 질문

작성

·

56

0

선생님 안녕하세요

좋은 강의 감사합니다.

 

multiprocessing(2) - Naming, Parallel processing

12분 경에서 질문이 있습니다.

 

    for i in range(1, 10): # 1 ~ 100 적절히 조절
        # 생성; name은 str을 받기 때문에 형변환
        t = Process(name=str(i), target=square, args=(i,))

        # 배열에 담기 - 한번에 풀면서 join 하기 위해서
        processes.append(t)

        # 시작
        t.start()

 

이런식으로 코드가 실행될때, 왜 서브 프로세스가 순서대로 실행이 되지 않는지 잘 이해가 가지 않습니다.

분명히 for loop에서 i가 순서대로 증가하면서 t.start()를 하거든요. 예를 들어, i =1 일때 t가 정의되고 t.start()가 된다음에 다시 i=2 가 되면서 반복되는 식으로요.

그럼 "논리상" 1번째 서브 프로세스부터 순차적으로 실행되어야 하는 것 아닌가요?

 

답변 1

2

좋은사람님의 프로필 이미지
좋은사람
지식공유자

네 안녕하세요. nathan님

좋은 질문입니다.

서브 프로세서의 실행의 위임은 "운영체제"에 있습니다. 운영체제가 스케쥴링에 맞춰서

실행 후 결과 값을 반환하는대요.

뒷 부분에서 각 프로세스의 현재 상태 체크와 실행 완료 순서가 먼저 처리 된 것을 기반으로

다양한 컨틑롤을 할 수 있습니다.

결국은 운영체제가 실행하기 때문입니다.

또한, 아래 링크도 한 번 읽어보시면 도움이 되실거예요.

https://m.blog.naver.com/PostView.nhn?blogId=sagala_soske&logNo=221280201722&proxyReferer=https:%2F%2Fwww.google.com%2F

nathan님의 프로필 이미지
nathan

작성한 질문수

질문하기