인프런 커뮤니티 질문&답변
스레드 실행 순서
작성
·
535
0
강의코드 똑같이 작성했는데 실행순서가 왜 다른지 잘 모르겠습니다
3.9.5 버젼입니다.
터미널 창:
19:41:09 : Main-Thread: before creating thread 19:41:09 : Main-Thread: before running thread 19:41:09 : Main-Thread: wait for the thread to finish 19:41:09 : Main-Thread: all done 19:41:09 : Sub-Thread First: starting 19:41:12 : Sub-Thread First: finished
import logging
import threading
import time
# 스레드 실행 함수
def thread_func(name):
logging.info("Sub-Thread %s: starting", name)
time.sleep(3)
logging.info("Sub-Thread %s: finished", name)
# 메인 영역
if __name__ == "__main__":
# 메인 스레드의 흐름을 타는 시작점.
# Logging format 설정
format = "%(asctime)s : %(message)s"
logging.basicConfig(format=format, level=logging.INFO, datefmt="%H:%M:%S")
logging.info("Main-Thread: before creating thread")
# 함수 인자 확인, 스레드 하나 생성, 타겟 : 스레드에서 만들 함수
x = threading.Thread(target=thread_func, args=('First',))
logging.info("Main-Thread: before running thread")
# 서브 스레드 시작
x.start()
# x.join() # 이게 있으면 메인은 스탑되고 서브 스레드 끝나고 나서 밑에 실행
logging.info("Main-Thread: wait for the thread to finish")
logging.info("Main-Thread: all done")
퀴즈
프로세스와 스레드의 주요 차이점 중, 메모리 사용 방식에 대한 설명으로 올바른 것은 무엇일까요?
프로세스는 메모리를 공유하고 스레드는 공유하지 않습니다.
스레드는 메모리를 공유하고 프로세스는 공유하지 않습니다.
둘 다 메모리를 공유하지만 프로세스는 스택 영역만 독립적입니다.
프로세스는 독립적인 메모리 공간을 가지며, 스레드는 같은 프로세스 내에서 스택을 제외한 대부분의 메모리를 공유합니다.




