现在,我已经困扰了几天。我已经花了几个小时搜索留言板,却空无一人。
我有一个程序可以从API中提取数据,使用JSON进行解析,然后将其显示在LCD屏幕上。我希望当数据满足特定条件时LED灯闪烁。到目前为止,我已经相当成功。我遇到的问题是,当调用线程从主while循环中开始闪烁,并且主while循环重新启动时,似乎再次调用了该线程。这导致我的LED在每次后续的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_start
时都会创建一个新的线程对象。 v.isAlive()
始终是False
,因为它是一个新线程。
您可以创建全局变量或类似的变量来存储线程对象,具体取决于您的代码结构。
关于python - 在while循环中使用线程会导致LED闪烁的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42738510/