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

문환룡님의 프로필 이미지
문환룡

작성한 질문수

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

multiprocessing(2) - Naming, Parallel processing

multiprocessing(2) - Naming, Parallel processing 에서 10분 33초 부분 질문입니다

작성

·

180

0

f __name__ == "__main__":
    # 부모 프로세스 아이디
    parent_process_id = os.getpid()
    # 출력
    print(f"Parent process ID {parent_process_id}")

    # 프로세스 리스트  선언
    processes = list()

    # 프로세스 생성 및 실행 - 가장 기본적인 구조
    for i in range(1, 10): # 1 ~ 100 적절히 조절
        # 생성
        t = Process(name=str(i), target=square, args=(i,))

        # 배열에 담기 - 한번에 join을 하려고 리스트에 담음
        processes.append(t)

        # 시작
        t.start()

    # Join - 한번에 join!!
    for process in processes:
        process.join()

    # 종료
    print("Main-Processing Done!")

해당 부분에서 t.start을 할 때 i=1부터 9까지의 프로세스들이 순차적으로 동작을 하는 것 아닌가요?

운영체제에서 할당을 해서 순서가 랜덤으로 된다고 이해를 했는데 혹시 pc에서 프로세스들을 할당받는 속도가 빨라서 거의 동시에 할당받는 것처럼 생각해, 랜덤의 순서로 프로세스 스케줄링 해주는 것인가요?

 

답변 1

0

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

네 안녕하세요.

열심히 하시네요!

100번 실행해보면 거의 순서가 유지될 거예요!

다만, 무조건 순서를 보장받는다고 볼 수 는 없습니다. (랜덤)

무거운 작업(랜더링, 영화 상영, 인터넷 실행 여부, 게임실행) 등 다양한 프로그램 실행 중

코어가 모두 작업을 하고 있을 경우에도 테스트 해보셔야 되여!

문환룡님의 프로필 이미지
문환룡

작성한 질문수

질문하기