해결된 질문
작성
·
64
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님
좋은 질문입니다.
서브 프로세서의 실행의 위임은 "운영체제"에 있습니다. 운영체제가 스케쥴링에 맞춰서
실행 후 결과 값을 반환하는대요.
뒷 부분에서 각 프로세스의 현재 상태 체크와 실행 완료 순서가 먼저 처리 된 것을 기반으로
다양한 컨틑롤을 할 수 있습니다.
결국은 운영체제가 실행하기 때문입니다.
또한, 아래 링크도 한 번 읽어보시면 도움이 되실거예요.