Python,如何检查a>;=b 5秒钟?我使用while循环,并在其他函数中获得延迟
我绝对是python的高手,而且主要是编程方面的高手。(因此,我希望我也能从中吸取教训) 我正在尝试用Raspberry Pi 3和Raspbian OS创建我的“程序” 我的问题如下: 我想测试“如果a>=b持续5秒”(其中“a”是我从其他函数的串行数据中读取的值) 如果是,做点什么,如果不是做点别的,做起来似乎很简单 我准备就绪的“party”在我的一个函数中使用while循环在代码中解决了一次,但当我将“time waiting while循环”复制到另一个函数时,它开始产生巨大的延迟(大约与我添加到额外while循环中的时间相同) 我真的希望有人能建议我用任何其他方法来检查“如果a>=b持续5秒”,而不是while循环Python,如何检查a>;=b 5秒钟?我使用while循环,并在其他函数中获得延迟,python,while-loop,raspberry-pi3,Python,While Loop,Raspberry Pi3,我绝对是python的高手,而且主要是编程方面的高手。(因此,我希望我也能从中吸取教训) 我正在尝试用Raspberry Pi 3和Raspbian OS创建我的“程序” 我的问题如下: 我想测试“如果a>=b持续5秒”(其中“a”是我从其他函数的串行数据中读取的值) 如果是,做点什么,如果不是做点别的,做起来似乎很简单 我准备就绪的“party”在我的一个函数中使用while循环在代码中解决了一次,但当我将“time waiting while循环”复制到另一个函数时,它开始产生巨大的延迟(大
`https://pastebin.com/HB99vH9c`
或者如果有人有空闲时间检查我的代码,告诉我我犯了什么错误(可能是很多noob错误)
这是我的代码,它不包含关键的2个while循环(只有一个延迟30秒)
另一个有两个额外的while循环,它似乎延迟了(我的xwatts变量的)测量,总共大约6-14秒(我在每个while循环中给出了3秒的延迟)
另外,很抱歉,我的代码很长,无法在这里粘贴两次
我的值“a”是一个不断变化的值,它在不到1秒的时间内更新,我需要知道a>=b是否持续5秒,如果下降1个读数(0.1秒),则必须重新启动5秒“计时器”您可以使用一段时间:
另外,删除代码中的所有
time.sleep()
将解决延迟问题。欢迎使用SO,如果您创建一个最小的示例,您将得到更多答案:堆栈溢出通常会使代码在太长时可滚动,这是一个有趣的格式化小问题。但是,如果要创建链接,可以使用[]
()
语法,其中[]
中包含要显示为超链接的文本,()
中包含实际链接。虽然如果您可以创建一个较小的示例,更好地显示您正在努力解决的问题,但读者会更容易帮助您。是的,链接格式不能与pasebin链接一起使用……这不是因为您花费了所有的时间。sleep()
?你得出你的逻辑了吗?也许这只是一个算法问题。如果我运行1while循环延迟版本,它工作得很好,所以我认为这不是由“time.sleep()”引起的,所以当我使用简单的“If”而不使用“while循环”来计算时间时,它会实时测量。实际上,我的值“a”是一个不断变化的值,它会在不到1秒的时间内更新,我需要知道a>=b是否持续5秒,如果仅下降1次读数(0.1秒),则必须重新启动5秒“计时器”@VikTor,如果是,则在此期间不要进行任何睡眠。否则,在这5秒内,您只能以较低的频率进行测量。这对我来说也开始有意义,不幸的是,我现在无法测试它,但我希望在明天删除time.sleep()
后它会起作用。我想我需要这些时间。睡眠(0.001)
可以防止while在“计数时间”时占用大量CPU电源
`https://pastebin.com/HB99vH9c`
import time
end_time = time.time() + 5
while 'Wait 5 seconds':
if a >= b:
...
if time.time() > end_time:
break