我已经编写了一个程序,它在 python 中设置了一个守护进程,以在后台对一些在主任务中被询问的计时器进行倒计时,它在 windows 下工作正常,但在 Pi 的实际所需目标上却没有。
我有强制进口:
from threading import Thread
import time
然后声明后台函数:
# Background Function called every 100ms to decrement button delay timers
def timer():
while True:
time.sleep(100/1000)
for i in range (No_Of_Buttons):
if(ButtonDelay[i] > 0):
ButtonDelay[i] = ButtonDelay[i] - 1
然后在后初始化阶段我有:
daemon = Thread(target=timer, daemon=True, name='timer')
daemon.start()
然后主程序将延迟值设置为零以外的值,这样做可以防止其他事情发生。
这一切在我的 PC 上运行良好,但在 Pi 上失败。
我在守护进程中放置了一个 print('Tick') 语句,在 Windows 下它每 100 毫秒左右打印一次“tick”。 在 Pi 上我什么也得不到,如果 ButtonDelay[x] 值没有随时间归零,程序行为就像我期望的那样。
在主程序中,如果按下按钮
while(ButtonDelay[bcode] > 0):
continue
# Now do button stuff
所以我希望它会延迟按钮的其余部分执行,直到关联的 ButtonDelay[] 为 0
我在这里错过了什么?
好的,所以我发现了为什么这行不通。我在整理如何做时运行了一个有缺陷的早期版本的代码,但它并没有完全关闭。
一双全新的靴子,效果很好。
我把这个留在这里,希望有人能受益。