我在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子句始终执行,那么该不遵守规则还是该规则的某些怪异例外?
您的父进程已经完成,您的线程才能完成执行。这就是为什么它永远不会达到“线程完成”部分的原因。