在python中使用线程打开风扇
我有这样一段代码,我在其中使用方法fan_on with thread在python中使用线程打开风扇,python,Python,我有这样一段代码,我在其中使用方法fan_on with thread 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.daemon = True t.start(
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.daemon = True
t.start()
return t
def sleep_fan():
time.sleep(5)
当我试着打电话给
fan_on()
风扇在达到5秒钟前关闭
当我尝试使用join()方法时
整个脚本处于休眠状态,这是一个问题
当风扇线程打开时,我也调用此代码
if args["alarm"] != "":
t = Thread(target=sound_alarm,
args=(args["alarm"],))
t.daemon = True
t.start()
我怎样才能解决这个问题?提前感谢。将提供与您的代码等效的代码
def fan_on():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
FAN_PIN = 23
GPIO.setup(FAN_PIN,GPIO.OUT)
GPIO.output(FAN_PIN,True)
//waiting code runs in other thread does not wait in this thread
编写睡眠函数并将其作为线程调用对我来说没有意义。
我认为你想要的输出可以通过以下方式获得
def fan_on():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
FAN_PIN = 23
GPIO.setup(FAN_PIN,GPIO.OUT)
GPIO.output(FAN_PIN,True)
time.sleep(5)
您需要使线程成为非守护进程。这将使您的脚本在退出
sleep\u fan
线程终止(即至少五秒钟)之前:
(这是默认设置。)
有关详细信息,请参阅:
风扇PIN
。先生,您能试着回答这个问题吗?谢谢。
def fan_on():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
FAN_PIN = 23
GPIO.setup(FAN_PIN,GPIO.OUT)
GPIO.output(FAN_PIN,True)
time.sleep(5)
t.daemon = False