Threading.Times不起作用

时间:2016-02-02 14:18:16

标签: python multithreading timer

线程中的Timer存在问题

来自documentation:

 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)),必须取消线程并且异常永远不会抛出

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:3)

你没有把这个函数作为参数传递,你是在调用它。

thr = threading.Timer(5.0, function_terminate(), args=())

必须成为这个

thr = threading.Timer(5.0, function_terminate, args=())

在你的情况下,你传递的是function_terminate(None)的返回值,而不是单独的函数。