Python 使用while循环中的线程会导致LED闪烁问题

Python 使用while循环中的线程会导致LED闪烁问题,python,json,multithreading,led,Python,Json,Multithreading,Led,我已经为一个问题挂断了好几天了。我花了几个小时搜索留言板,结果一无所获 我有一个程序,可以从API中提取数据,用JSON解析数据,并将其显示在LCD屏幕上。当数据满足特定条件时,我希望LED灯闪烁。到目前为止,我相当成功。我遇到的问题是,当一个线程被调用以从我的主while循环开始闪烁,并且主while循环重新启动时,该线程似乎会再次被调用。这会导致每次后续while循环重新启动后,我的指示灯开始出现异常。有什么建议吗 我尝试使用v.isAlive()==False“希望线程不会重新启动,但这没

我已经为一个问题挂断了好几天了。我花了几个小时搜索留言板,结果一无所获

我有一个程序,可以从API中提取数据,用JSON解析数据,并将其显示在LCD屏幕上。当数据满足特定条件时,我希望LED灯闪烁。到目前为止,我相当成功。我遇到的问题是,当一个线程被调用以从我的主while循环开始闪烁,并且主while循环重新启动时,该线程似乎会再次被调用。这会导致每次后续while循环重新启动后,我的指示灯开始出现异常。有什么建议吗

我尝试使用v.isAlive()==False“希望线程不会重新启动,但这没有帮助。我只希望线程在条件满足时启动一次,然后继续闪烁LED,直到条件不满足为止。因为我使用的是LCD屏幕,所以数据是连续循环的

下面是我的程序的一个非常简化的片段:

def partCloudBlink():
while True:
    allLEDon()
    time.sleep(2.5)
    yellowLEDon()
    time.sleep(1)
    allLEDoff()

def partCloudBlink_start():
v = threading.Thread(target=partCloudBlink)
if v.isAlive() == False:
    v.daemon = True
    v.start()

RUNNING = True

try:
    while RUNNING:
        if weather in ("Partly Cloudy"):
            partCloudBlink_start()

        print "Current conditions: %s" % (conditions) #unrelated to the question, just program filler

except KeyboardInterrupt:
    RUNNING = False

非常感谢!

这是因为每次调用
partCloudBlink\u start
时都会创建一个新的线程对象。
v.isAlive()
总是
False
,因为它是一个新线程


您可以创建一个全局变量或类似的东西来存储thread对象,具体取决于您的代码结构。

所以我只是尝试使用PartCloudBlink\u start()一个变量,然后我在我的脚本中运行了这个变量,它工作得很好。所以它工作了…然后4或5个循环开始疯狂运行。看起来线程只是不断地重新启动自己。我最终运行了数百次线程迭代。我不明白“让
PartCloudBlink\u启动
一个变量”是什么意思”“是的。请参阅
partCloudBlink\u start
中的变量
v
,每次调用该变量时,都会创建一个新线程并将其分配给
v
。这就是为什么要运行数百个线程。