我已经挂了几天的问题,现在。我花了几个小时搜索留言板,然后空了。
我有一个程序从API中提取数据,用JSON解析它,并将其显示在LCD屏幕上。当数据满足特定条件时,我希望LED灯闪烁。到目前为止我一直很成功。我遇到的问题是当一个线程被调用以从我的主while循环开始闪烁,并且主while循环重新启动时,似乎再次调用该线程。这导致我的LED在每次后续循环重启后开始表现得很古怪。有什么建议吗?
我尝试使用v.isAlive()== False“希望线程不会重启但这没有帮助。我只是希望线程在条件满足后启动一次然后继续闪烁LED直到条件不满足。由于我使用的是液晶显示屏,因此数据是连续循环的。
这是我程序的一个非常简化的片段:
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
非常感谢!
答案 0 :(得分:0)
这是因为每次调用partCloudBlink_start
时都会创建一个新的线程对象。 v.isAlive()
始终为False
,因为它是新主题。
您可以创建一个全局变量或类似的东西来存储线程对象,具体取决于您的代码结构。