首页 > 解决方案 > python中的线程,没有错误,但程序似乎不起作用

问题描述

我正在为我的树莓派开发一个程序。目前我只是想让程序打印“黄色 LED 亮”或“红色 LED 亮”。我对线程是全新的,但对 python 不是。我目前写了一些代码,但是我不知道为什么当我运行它时,什么都没有发生,并且程序永远不会终止。如果有人有任何想法,他们将不胜感激。我已经发布了下面的代码。提前致谢。

from threading import Thread
import random
import time

def blinking_LED(n,t):
    i = 10
    for x in range (n,i):
        if (x % 2) == 0:
            color = "yellow"
            n += 1
        else:
            color = "red"
            n += 1
    # output result
        if (color == "yellow"):
            print ("Yellow LED on")
            time.sleep(2)
        else:
            print ("Red LED on")
            time.sleep(2)
    #exit function, terminate program
    s.quit()

if __name__ == "__main__":

    # value to pass into the functions
    v = 1

    # create threads
    t1 = Thread(target=blinking_LED, args=(v,1))

    # Start threads
    t1.start()

    #tell main thread to stay alive until both threads are done
    t1.join()

标签: pythonpython-multithreading

解决方案


from threading import Thread
import time


def blinking_LED(n):
    for x in range(n):
        if (x % 2) == 0:
            print("Yellow LED on")
        else:
            print("Red LED on")
        time.sleep(1)


if __name__ == "__main__":
    t1 = Thread(target=blinking_LED, args=(10,))
    t1.start()

    # Tell main thread to stay alive until both threads are done
    t1.join()

您不必调用 s.quit(),不管它是什么,当函数返回时,线程将终止。

我不确定您的问题出在哪里,坦率地说,您的代码有点难以阅读。看上面的例子,它每秒打印“LED on”,交替颜色,并在 10 次迭代后终止。


推荐阅读