这是我的代码,打开风扇,我在单独的线程上运行睡眠,因为它使整个脚本进入睡眠状态
def fan_on():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
FAN_PIN = 23
GPIO.setup(FAN_PIN,GPIO.OUT)
GPIO.output(FAN_PIN,True)
t = Thread(target=sleep_fan)
t.deamon = True
t.start()
def sleep_fan():
time.sleep(10)
脚本正在运行,但是我没有得到10 scs,只有1或2秒?如何解决这个问题? TIA
答案 0 :(得分:1)
我将假设您的程序在10秒结束之前就死了,这是杀死风扇的原因。 daemon
中t.deamon = True
的拼写错误在这里无关紧要。
在主函数中加入该线程可能更好。
def fan_on():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
FAN_PIN = 23
GPIO.setup(FAN_PIN,GPIO.OUT)
GPIO.output(FAN_PIN,True)
t = Thread(target=sleep_fan)
t.deamon = True
t.start()
return t
fan_thread = fan_on()
fan_thread.join() # waits for thread to exit before moving on.
答案 1 :(得分:-1)
正如亚当·史密斯(Adam Smith)所说,问题是由于新线程在创建后几乎立即死亡,而不是因为守护进程。因此,您应该使用join方法。