python – 独立于其他命令每5分钟运行一部分代码

我想打开,保持打开状态6秒钟,每5分钟关闭一个继电器,其余代码正常运行.

例如:

GPIO.output(18, 1)
sleep(6)
GPIO.output(18, 0)
sleep(300)

但没有其他程序堆栈在此延迟.我的Python代码是:

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BOARD)
GPIO.setup(13, GPIO.IN, GPIO.PUD_UP)
GPIO.setup(7,GPIO.OUT)
GPIO.setup(37, GPIO.OUT)
Hologram = '/home/pi/Hologram/Hologram.mp4'

from subprocess import Popen

firstTimeOpen=0

while True:

        doorIsOpen = GPIO.input(13)

        if doorIsOpen==0 and firstTimeOpen == 0:
                        firstTimeOpen=1
                        GPIO.output(7, 0)
                        GPIO.output(37, 0)
                        sleep(0.5)

        if doorIsOpen==1 and firstTimeOpen == 1:
                GPIO.output(7, 1)
                GPIO.output(37, 1)
                omxp = Popen(['omxplayer' ,Hologram])
                sleep(87)
                GPIO.output(7, 0)
                GPIO.output(37, 0)
                firstTimeOpen=0
                sleep(0.5)

最佳答案 线程提供了一种方便的方法.我通常创建一个threading.Thread子类,其run方法是要在单独的线程中运行的代码.所以你会想要这样的东西:

class BackgroundRunner(threading.thread):
    def run(self):
        while True:
            GPIO.output(18, 1)
            sleep(6)
            GPIO.output(18, 0)
            sleep(300)

然后,在开始运行主代码之前,请使用

bg_runner = BackgroundRunner()
bg_runner.start()
点赞