带有Python中Daemon线程的最后子句

问题描述 投票:0回答:1

我在Visual Studios 2019中尝试过此操作

import threading, time

def thread_func():
    try:
        print('thread start')
        time.sleep(4)
    finally:
        print('thread finish')


print('main start')
t=threading.Thread(target=thread_func,daemon=True)
t.start()
time.sleep(2)
print('main finish')

输出

main start
thread start
main finish

The documentation声明finally子句始终执行,那么该不遵守规则还是该规则的某些怪异例外?

python multithreading python-multithreading finally
1个回答
0
投票

您的父进程已经完成,您的线程才能完成执行。这就是为什么它永远不会达到“线程完成”部分的原因。

© www.soinside.com 2019 - 2024. All rights reserved.