gpt4 book ai didi

python - "ValueError: sleep length must be non-negative"在线程中

转载 作者:太空宇宙 更新时间:2023-11-03 17:00:52 26 4
gpt4 key购买 nike

下面的代码在一个线程中。该代码是从几年前在这里提出的问题的答案复制的(不幸的是我现在找不到这个问题)。虽然它对我来说看起来不错,但我收到一个错误:“ValueError: sleep 长度必须为非负数”。这种情况仅在大约一个小时左右后发生。难道它必须在 PC 进入休眠状态时执行某些操作(我认为不太可能,但它是一台运行 Windows 10 的笔记本电脑;-))。这是代码:

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())

我希望这是可读的,我不确定代码块看起来像我想要的......顺便说一句:它是我正在开发的恒温器程序的一部分,旨在在 Raspberry Pi 上运行。

最佳答案

好吧,如果不是每个人都清楚的话。

这里的问题是,当你的计算机在循环中间休眠时,你的 next_call = next_call+1 会变旧,然后你减去 time.time() ,这取决于多少时间计算机的 sleep 时间可能会稍大一点或大很多(除非您的计算机 sleep 时间少于一秒)。

next_call = time.time() # Let's assume next_call=1
while True:
...
# computer sleeps for 5 seconds
next_call = next_call+1 # now next_call=2
time.sleep(next_call - time.time()) # At this time, time.time() returns 6 (1 start + 5 sleeps) -> 2 - 6 = -4

有几个选项可以使其表现良好,第一个也是更简单的一个是添加一个 if 来检查 sleep 时间是否为负数。

关于python - "ValueError: sleep length must be non-negative"在线程中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35003699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com