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

asd5153님의 프로필 이미지
asd5153

작성한 질문수

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

multiprocessing(1) - Join, is_alive

메인 시작 영역에 관한 질문

작성

·

304

0

강사님 안녕하세요, 

#메인 시작 영역에 관해 질문드립니다. 

main( ) 함수 실행시 

if __name__ == "__main__" 영역 밖에서 실행했을 때 Runtime Error가 발생하던데, 왜 그런지 알고 싶습니다. 

(Threading에서는 if __name__=="main" 영역 밖에서 실행했을 때 정상적으로 작동하는 것 같은데 말입니다)

아래 전체 코드 드립니다. 감사합니다. 

 

from multiprocessing import Process

import time

import logging

 

def process_func(name):

    print(f"subprocess {name} stated")

    time.sleep(3)

    print(f"subprocess {name} stated")

 

def main():

    format = "%(asctime)s: %(message)s"

    logging.basicConfig(format=format, level=logging.INFO, datefmt="%H:%M:%S")

 

    # 함수 인자 확인

    p = Process(target=process_func, args=('First',))

 

    logging.info('Main_process : before Creating')

 

    p.start()

 

    logging.info('Main_process : Sub Process stated')

    logging.info(f'Main_prcess : Status: {p.is_alive()}')

 

    p.join()

 

    logging.info(f'Main_prcess : Status: {p.is_alive()}')

    logging.info('Main_process : Sub Process finished')

 

# if __name__=="__main__":

main()

 

 

답변 1

1

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

네 좋은 질문이예요

시작 지점인 __main__ 에서 실제 부모 프로세스에 의하여 잡을 할당하고 실행됩니다.

당연히 main 영역 외부라면 진입점이 없으므로 실행되지 않습니다.

asd5153님의 프로필 이미지
asd5153
질문자

답변 감사합니다!

asd5153님의 프로필 이미지
asd5153

작성한 질문수

질문하기