python - 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()
解决方案
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 次迭代后终止。
推荐阅读
- excel - Office.context.document.settings.set 不适用于 Excel Mac
- autodesk-forge - 将冗长参数传递给工作项的最佳方法
- nasm - 如何在寄存器 x86_64 nasm 中正确存储过程的地址?
- haskell - 倒数第二行中的 Haskell“显示”功能对于“GamePos”类型的新变体无法正常工作
- azure - 从 azure AD 应用程序获取 ownerid
- r - 减少使用 R markdown 生成的投影仪演示文稿中表格和标题之间的距离
- java - 发送带有附件的电子邮件时出错
- math - 偏离中心线旋转
- javascript - 画布Javascript中的随机扩展圆圈
- string - 如何在源代码中跨多行编写单行字符串文字