작성
·
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 영역 외부라면 진입점이 없으므로 실행되지 않습니다.
답변 감사합니다!