• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

스레드 실행 순서

21.11.27 19:43 작성 조회수 384

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 메소드 주석풀고 실행하시면 됩니다.

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