threading daemon和non-daemon代码笔记
threading的daemon和non-daemon
看python主线程是如何等待
import time
import threading
def foo(n):
for i in range(n):
print(i)
time.sleep(1)
t1 = threading.Thread(target=foo, args=(10, ), daemon=True) # 尝试替换这里的10和下面20的顺序
t1.start()
t2 = threading.Thread(target=foo, args=(20, ), daemon=False)
t2.start()
time.sleep(2)
print('Main Thread Exiting')
daemon 应用场景
主线程退出,其他daemon线程的都会被杀死
import time
import threading
def bar():
while True:
time.sleep(1)
print('bar')
def foo():
print("t1's daemon = {}".format(threading.current_thread().isDaemon()))
t2 = threading.Thread(target=bar)
t2.start()
print("t2's daemon = {}".format(t2.isDaemon()))
t2.join()
t1 = threading.Thread(target=foo, daemon=True)
t1.start()
# t1.join() 如果想工作线程不能结束,取消掉这个注释
time.sleep(3)
print('Main Thread Exiting')