import time
import threading
# 守护线程执行逻辑
def myDaemon():
time_start = time.time()
event.clear()
# 不断的计算时间差,如果超时则退出,并终止线程
while(True):
time_end = time.time()
if(event.isSet()):
break
if(time_end - time_start > 3):
print("time out")
break
# 计时器装饰器
def timerDecoration(func):
def wrapTheFunction():
# 开启一个计时线程
timer_thread = threading.Thread(target=myDaemon)
timer_thread.start()
# 执行耗时函数
func()
return wrapTheFunction
@timerDecoration
def consumer():
time.sleep(2)
event.set()
print("do consumer")
# 通过事件来通知,当主线程正常完成时,使得事件为 True 通知守护线程结束
event = threading.Event()
consumer()