线程中的Timer存在问题
def hello(): print "hello, world" t = Timer(30.0, hello) t.start() # after 30 seconds, "hello, world" will be printed
取消()
停止计时器,取消执行计时器的操作。这只有在计时器仍处于等待阶段时才有效。
这是我的代码:
def function_terminate():
raise Exception
def do():
thr = threading.Timer(5.0, function_terminate(), args=())
thr.start()
sleep(2)
thr.cancel()
此代码抛出例外
但根据文档, function_terminate()方法必须在调用后5秒后运行。 因为,2秒后我有 thr.cancel ( sleep(2)),必须取消线程并且异常永远不会抛出
我的代码出了什么问题?
答案 0 :(得分:3)
你没有把这个函数作为参数传递,你是在调用它。
此
thr = threading.Timer(5.0, function_terminate(), args=())
必须成为这个
thr = threading.Timer(5.0, function_terminate, args=())
在你的情况下,你传递的是function_terminate(None)的返回值,而不是单独的函数。