강의

멘토링

커뮤니티

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

Zetta Kim님의 프로필 이미지
Zetta Kim

작성한 질문수

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

Thread(2) - Daemon, Join

daemon=True가 안 먹히네요

작성

·

32

0

안녕하세요.

저는 daemon=True 해도 서브가 모두 돌고 끝납니다. 무슨 이유가 있을까요?

 


# 스레드 실행 함수
def thread_func(name, d):
    logging.info('Sub-Thread %s: starting', name)

    for i in d:
        print(i)

    logging.info('Sub-Thread %s: finished', name)

...


# 함수 인자 확인
    # daemon : default False
    x = threading.Thread(target=thread_func, args=('First', range(20000)), daemon=True)
    y = threading.Thread(target=thread_func, args=('Second',range(10000)), daemon=True)

19:16:32: Main-Thread: all done

0

1

2

...

19999

19:16:32: Sub-Thread Second: finished

19:16:32: Sub-Thread First: finished

답변 2

1

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

네 안녕하세요. 좋은 질문입니다.

메인쓰레드가 먼저 종료된것처럼 보이나, 실제로는 메인쓰레드 출력과 동시에
데몬쓰레드 출력이 나중에 표시된 것입니다.
실제 업무 환경에서도 ide에서 print 문으로 텍스트를 출력하는 시간이 미세하게
차이가 있습니다.
소스코드는 정상입니다.
주로
logging

  • I/O flush

  • lock

  • handler 종료 대기


    등으로 아주 짧은 시간이지만 데몬쓰레드 실행이 끝나버립니다.(컴퓨터 성능이 그만큼 빠르기 때문)

참고 하시면 될 것 같습니다.

감사합니다.

0

Zetta Kim님의 프로필 이미지
Zetta Kim
질문자

설명 감사합니다.

Zetta Kim님의 프로필 이미지
Zetta Kim

작성한 질문수

질문하기