Python线程计时器,不立即执行或执行

时间:2013-09-06 00:10:11

标签: python multithreading timer

我正在尝试实现一个线程计时器来控制串行进程的超时。

def tst_setMaxTimeFlag():

    lock.acquire()
    maxTimeFlag = 1
    lock.release()

    print "timeout!"
    return

def tst_setMaxTimeTimer(maxResponseTime):
    global responseTimer

    lock.acquire()
    maxTimeFlag = 0
    lock.release()

    responseTimer = threading.Timer(2,tst_setMaxTimeFlag)
    print "timer set!"
    responseTimer.start        
    print "timer start!"
    return

我想输出为:

  1. 计时器设置
  2. 计时器启动
  3. 超时!
  4. 但是,永远不会调用tst_setMaxTimeFlag()并超时!从未打印过。

    如果我将responseTimer = threading.Timer(2,tst_setMaxTimeFlag)改为responseTimer = threading.Timer(2,tst_setMaxTimeFlag()),则无论时间参数如何,都会立即调用超时函数。

    maxTimeFlag在main中设置为全局并初始化为0.

    有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您丢失了代码段中的所有缩进内容,因此很难确定您的操作是什么。

最明显的问题是responseTimer.start。这只是检索start对象的responseTimer方法。您需要调用该方法来启动计时器;即,做responseTimer.start()

然后它将产生你期望的输出,在最后的“超时”之前延迟大约2秒!打印出来。