from threading import Timer
def startTimer():
t = Timer(10.0, foo, ['hello world', 'tell me more'] )
t.start()
print 'Timer function invoked'
print 'function exit'
def foo(msg, msg2):
print 'foo was executed'
print msg
print msg2
if __name__ == '__main__':
startTimer()
print 'end of program'
我已将上述代码保存在文件(timer.py)中,然后在shell中键入python timer.py。但它一直等到foo()被执行。为什么会这样?你怎么称呼这种行为/执行方式?
答案 0 :(得分:19)
Timer只是一个线程,Python在停止解释器之前等待所有非daemonic
线程。
一个线程可以被标记为“守护进程” 线”。这面旗帜的意义 是整个Python程序 仅在守护程序线程时退出 剩下。初始值是继承的 来自创建线程。国旗可以 通过守护进程属性设置。
设置the_timer.daemon=True
,Python将立即退出而不是等待计时器。