加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 11:53:36 所属栏目:Python 来源:网络整理
导读:我想打开,保持打开状态6秒钟,每5分钟关闭一个继电器,其余代码正常运行. 例如: GPIO.output(18,1)sleep(6)GPIO.output(18,0)sleep(300) 但没有其他程序堆栈在此延迟.我的Python代码是: import RPi.GPIO as GPIOfrom time import sleepGPIO.setmode(GPIO.BOA
我想打开,保持打开状态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()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读