【发布时间】:2019-06-12 16:34:52
【问题描述】:
我正在尝试让计时器功能在 Python(当前为 Python 2.7)中工作。
这是我目前所拥有的。我正在努力解决线程问题并重置计时器。
from threading import Timer
def api_call():
print("Call that there api")
t = Timer(10.0,api_call)
def my_callback(channel):
if something_true:
print('reset timer and start again')
t.cancel()
t.start()
print("\n timer started")
elif something_else_true:
t.cancel()
print("timer canceled")
else:
t.cancel()
print('cancel timer for sure')
try:
if outside_input_that_can_happen_a_lot:
my_callback()
finally:
#cleanup objects
基本上,my_callback() 可以非常快速地调用很多次,并且可以命中“if”、“elif”或“else”语句的任何部分。
我遇到的问题是,当something_true 变量为真时,它将启动一个计时器。 第一次效果很好。之后每次调用它,我都会收到一个线程错误,告诉我只有一个线程可以用于计时器。
基本上,我希望能够在第一个“if”上重置我的计时器,并在“elif”或“else”被击中时取消。
【问题讨论】:
-
请添加更具体的代码,而不是
outside_input_that_can_happen_a_lot和something_true等 -
嗨@Devesh,我试图让它尽可能简单。你要什么代码?
-
如果我的解决方案here 适合您,您可以尝试一下,它会为您处理重置,您可以简单地
timelord.reset(interval)。
标签: python multithreading python-2.7 timer