python线程不会在后台启动

2024-07-01 07:21:04 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的类打开,关闭,和闪烁指示灯在树莓派 我想在一段时间内停止线程闪烁。。。 但线程不会在后台运行。。。在

class LED:

_GPIOPORT=None
flagstop=0
flag=threading.Event()


def __init__(self,GPIONUM):
    self._GPIOPORT=GPIONUM
    GPIO.setmode(GPIO.BOARD)
    GPIO.setwarnings(False)
    GPIO.setup(self._GPIOPORT, GPIO.OUT)
    self.flag.set()


def TurnOn(self):
    self.flag.clear()
    print 'Turn On ...'
    GPIO.output(self._GPIOPORT,True)

def TurnOff(self):
    self.flag.clear()
    print 'Turn Off ...'
    GPIO.output(self._GPIOPORT,False)

def Blink(self,delay,e):
    print 'Thread Blink Create ...'
    t1=threading.Thread(self.BlinkThread(delay,e))
    t1.start()
    print 'Thread Started'

def BlinkThread(self,delaytime,event):
    print 'BlinkTrehad Start ....'
    while not event:
        GPIO.output(self._GPIOPORT,False)
        sleep(delaytime)
        GPIO.output(self._GPIOPORT,True)
        sleep(delaytime)

这是我使用这个类的模块:

import LED
from time import sleep
import threading

    if __name__ == '__main__':
        e=threading.Event()
        e.set()
        ledblue=LED.LED(11)
        ledblue.TurnOn()
        sleep(1)
        ledblue.Blink(1,e)
        ledblue.TurnOn()

从来没有“线程启动”打印在控制台和循环运行在线


Tags: selffalseoutputledgpiodefsleep线程
1条回答
网友
1楼 · 发布于 2024-07-01 07:21:04

您在线程构造函数中调用BlinkThread(),而不是仅仅传递函数引用和参数并让线程启动函数。更改为:

def Blink(self,delay,e):
    print 'Thread Blink Create ...'
    t1=threading.Thread(target=self.BlinkThread, args=(delay,e))
    t1.start()
    print 'Thread Started'

相关问题 更多 >

    热门问题