我正在尝试实现一个线程计时器来控制串行进程的超时。
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
我想输出是:
- 定时器设置
- 定时器启动
- 暂停!
但是, tst_setMaxTimeFlag() 永远不会被调用并超时!从不打印。
如果我更改responseTimer = threading.Timer(2,tst_setMaxTimeFlag)
超时responseTimer = threading.Timer(2,tst_setMaxTimeFlag())
函数,则无论时间参数如何,都会立即调用。
maxTimeFlag 在 main 中设置为全局并初始化为 0。
有什么想法吗?