下面的代码在一个线程中。这个代码是从几年前这里提出的一个问题的答案中复制的(不幸的是,我现在找不到这个问题)。虽然听起来不错,但我得到了一个错误:“ValueError:sleep length must be non-negative”。大约一个小时后才会发生这种情况。可能是因为它必须在电脑进入睡眠状态时做些什么(我认为不太可能,但它是一台运行Windows10的笔记本;-)。代码如下:
def upd_variables():
next_call = time.time()
while True:
measured_temp = 19.5 # te wijzigen in uitlezing van de sensor
acttemp.configure(text = str(measured_temp))
humi = '49.5' # te wijzigen in uitlezing van de sensor
humidity.configure(text = humi)
actdaytime = datetime.datetime.now()
today = actdaytime.strftime("%A %d %B %Y %H:%M:%S")
datumtijd.configure(text=today)
if (measured_temp < desired_temp):
#CV aan
status.configure(text="CV aan")
else:
#CV uit
status.configure(text="CV uit")
next_call = next_call+1;
time.sleep(next_call - time.time())
我希望这是可读的,我不确定代码块会看起来像我希望它。。。 顺便说一句:这是我正在研究的恒温器程序的一部分,打算在树莓皮上运行。在
如果大家都不清楚的话。在
这里的问题是,当您的计算机在循环的中间休眠时,
next_call = next_call+1
会变旧,然后您会进行减法时间。时间()这取决于计算机睡眠的时间,它可能会大一点或大得多(除非你的计算机睡眠时间少于一秒钟)。在有几个选项可以使它正常工作,第一个更简单的方法是添加一个
if
,检查睡眠时间是否为负。在相关问题 更多 >
编程相关推荐