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

skhy8356님의 프로필 이미지
skhy8356

작성한 질문수

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

Thread(1) - Basic

스레드 실행 순서

작성

·

476

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=formatlevel=logging.INFOdatefmt="%H:%M:%S")
    logging.info("Main-Thread: before creating thread")

    # 함수 인자 확인, 스레드 하나 생성, 타겟 : 스레드에서 만들 함수
    x = threading.Thread(target=thread_funcargs=('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")

답변 1

0

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

순서를 보장하려면 join 메소드 주석풀고 실행하시면 됩니다.

여러 스레드를 생성하면 순서는 보장되지 않아여 강의끝까지 들어보시면 이해가 되실거예요

skhy8356님의 프로필 이미지
skhy8356

작성한 질문수

질문하기