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

标签 python json multithreading led

现在,我已经困扰了几天。我已经花了几个小时搜索留言板,却空无一人。

我有一个程序可以从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/

相关文章:

java - 如何使用 GSON 比较两个 JSON 字符串是否相等?

java - 管理数据库中的产品数量

java - 在桌面和移动 CPU 上使用 Java 进行并行处理

python - 使用快速傅里叶变换分析音频

python - 如何使用 Py2Neo 修复 Linux 上的 IncompleteRead 错误

python - 如何在 scrapy-splash 中设置启动超时?

python - 语法错误 : Generator expression must be parenthesized

java - 通过 Jackson-2.9.7 导出/导入 JSON 文件

json - 如何在没有 rest API key 的情况下将结构转换为 json

c - 反向传播算法的多线程