【发布时间】:2021-05-29 11:36:55
【问题描述】:
我在 Raspbian 中有一个 python 脚本,它无限循环并在主函数执行之间休眠 15 分钟。 Main 是线程化的,但通常需要 3 秒才能运行。我不希望任何代码中断,及时进行下一次调用。在睡眠期间,我想检测按键“r”以选择性地启动另一个函数,也可能是线程的。
我尝试了 pynput 模块,但出现了奇怪的停顿,这似乎与我需要的线程和使用 VNC 签入有关。我还尝试了线程内的常规旧输入,但在没有用户输入的情况下无法结束线程。
键盘模块在 Windows 中运行良好,但没有检测到 Raspbian 的键。我正在使用 sudo "sudo python3 scriptname.py" 运行脚本如果需要,我可以缩短我的睡眠周期,在一分钟左右后调用该函数。我只是不能有一个大的停顿。
import time
import keyboard
import threading
def mainFunc():
print('does stuff')
def keyFunc():
print('do key detect stuff')
while True:
t1 = threading.Thread(target=mainFunc)
t1.start()
time.sleep(60)
t1.join()
keyboard.on_press_key("r", lambda _:keyFunc())
for _ in range(14):
time.sleep(60)
keyboard.unhook_all()
【问题讨论】:
-
看起来我可以通过让具有常规旧输入的守护程序线程在主循环之外的自己的循环中运行来解决它,并且注意不要在 mainFunc 运行时使用它。希望它在很长一段时间内保持稳定。
标签: python keyboard sleep raspbian detection