我正在研究一个小概念验证并使用python来说明这个想法。这个想法是程序将在循环中运行并将检查输入。现在,如果输入低于阈值,则发送通知。但我试图以4秒的间隔限制通知。这就是我用逻辑或一些语法失去的地方。无论哪种方式它正在做一些意想不到的事情
1:继续输入0,它将显示以下阈值消息,直到达到4秒标记然后它只在一行中打印出4次消息。我希望他们每4秒钟后显示一次。这个想法是(A)输入可能在4秒内改变并且通知切换。 (B)我希望每当脚本达到条件时,如果weightIn<则通知将播放作为提醒,每次重复4秒。 0.5 ..如果是,那么通知在第一次发送后4秒后就会消失
很抱歉,如果我试着解释一下。我是python的新手
import threading
def main():
while True:
weightIn = float(input("Get value: "))
threshold = .5
def operation():
if weightIn < 0.5:
#send notification at an interval of 4 sec
threading.Timer(4.0, operation).start()
print("Below weight threshhold...send notification")
else:
print("You are good")
if threshold is not None:
operation()
main()
答案 0 :(得分:1)
首先避免在循环中声明函数。然后问问自己,一个对象是否合适,因为它正确地包含了状态属性。
但对于算法部分,它很简单(如果我正确理解了问题......)。存储上次通知的时间戳,如果超过4秒,则发送一个新通知。在伪代码中:
last_notification_time = 0
threshold = 0.5
loop:
weighIn = get_new_value()
if weightIn < threshold:
time = get_time_in_seconds()
if (time > last_notification_time + 4):
last_notification_time = time
send_notification()
# actual processing
在Python中,它看起来像:
#import time
def main():
last_notification_time = 0
threshold = 0.5
while True:
weighIn = float(input("Get value: "))
if weightIn < threshold:
cur_time = time.time()
if (cur_time > last_notification_time + 4):
last_notification_time = time
print("Below weight threshhold...send notification")
# actual processing
main()