为什么这个python脚本会一直等到执行计时器线程?

时间:2010-12-25 18:16:52

标签: python execution

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()被执行。为什么会这样?你怎么称呼这种行为/执行方式?

1 个答案:

答案 0 :(得分:19)

Timer只是一个线程,Python在停止解释器之前等待所有非daemonic线程。

  

一个线程可以被标记为“守护进程”   线”。这面旗帜的意义   是整个Python程序   仅在守护程序线程时退出   剩下。初始值是继承的   来自创建线程。国旗可以   通过守护进程属性设置。

from the docs

设置the_timer.daemon=True,Python将立即退出而不是等待计时器。