gpt4 book ai didi

Python:多线程还是循环?

转载 作者:行者123 更新时间:2023-12-01 02:06:24 27 4
gpt4 key购买 nike

我想知道使用多线程的思想在光强度传感器和运动传感器之间执行信息共享是否可行。我正在开展一个项目,以实现室内环境中照明质量的自动化。 (我是编程初学者,希望得到任何反馈!)

我现在开始的方式只是使用简单的数字条件和打印语句来测试代码。以下是该项目的模拟代码。

x=1 #set simply to say some is enters room

def MotionSenseLeave(x):

x=0
if x==0:
print("3. Someone left") #Wait for someone to leave by checking condition
LightSense()
else:
x==0
return x

def LightSense():

#Turn on lights
if x==1: #and light quality is above/below a value#
print("2. Adjust Light") #Measure Light Quality
MotionSenseLeave(x)
elif x==0:
print("Stop operation, the person left")
MotionSenseEnter(x)
elif x==1: #and light is close to value
print("Light quality sufficent, no changes needed")
MotionSenseLeave(x)

def MotionSenseEnter(x):

while x!=1:
if x==1:
print("1. Someone here") #Wait for someone to come in
LightSense()
else:
x==0
return x

MotionSenseEnter(x) #begin operation

基本上,操作从MotionSenseEnter()开始,并等待进入条件或x=1(在本例中我只是在开始时将其设置为1)。如果有人进入,则转到 LightSense(),打开灯,然后案例开始,在每个案例之后,我运行 MotionSenseEnter() 或 MotionSenseLeave() 函数来查看该人是否进入/离开以关闭/关闭系统,以及从头开始重新启动,直到检测到条目。

我想知道对这些进程进行多线程处理是否会更有效。如果是的话,我想我必须首先检查是否有人进入房间,然后多线程离开条件和灯光监控条件以继续操作或关闭它并等待再次进入。如果有人对此有任何意见,欢迎所有反馈。再说一遍,我是编程初学者,我欣赏所有想法,但简单的想法最适合我!

最佳答案

这取决于您如何从传感器获取信息以及调整光线意味着什么。

你正在做control system这通常意味着您想要绘制并实现 state machine为了您的运营。您想要“灯关闭”、“灯亮”等状态,并且您的事件是“检测到运动”、“运动停止”——也许还有一些额外的定时器状态,这样如果有人站着不动,灯就不会闪烁。

根据您的输入,您必须:

  • 从您收到的推送事件中驱动它
  • 循环,从传感器轮询信息

对于其中任何一个都不需要多线程。它可能有用的是驱动灯光:如果您希望它们逐渐增强而不是立即打开,您可能需要一个单独的线程来随着时间的推移调整灯光以达到状态机预期的水平。

基本系统应该可以在没有任何多线程的情况下实现。不过,您需要一些事件处理才能获得定时事件。 (X秒不活动后关灯)

在你的伪代码中,你目前有一个无限递归,这是你绝对不想要的。

关于Python:多线程还是循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49019238/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com