강의

멘토링

커뮤니티

Inflearn Community Q&A

zettakim's profile image
zettakim

asked

Python for Advanced Users: Learn the Grammar of Concurrency and Parallelism Feat. Multithreading vs. Multiprocessing (Inflearn Original)

Thread(2) - Daemon, Join

daemon=True가 안 먹히네요

Written on

·

50

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

python동시성

Answer 2

1

niceman님의 프로필 이미지
niceman
Instructor

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

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

  • I/O flush

  • lock

  • handler 종료 대기


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

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

감사합니다.

0

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

설명 감사합니다.

zettakim's profile image
zettakim

asked

Ask a question