【发布时间】:2018-08-07 17:22:02
【问题描述】:
我想知道使用多线程的想法在光强度传感器和运动传感器之间执行信息共享是否可行。我正在做一个项目来自动化房间环境中的照明质量。 (我是编程初学者,如果有任何反馈,我将不胜感激!)
我现在开始的方式只是用简单的数字条件测试代码并打印语句。下面是项目的模拟代码。
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() 函数来查看该人是否进入/离开以关闭/关闭系统和从头开始重新启动,直到检测到条目。
我想知道将这些进程多线程化是否更有效。如果是的话,我想我得先检查是否有人进入房间,然后多线程离开条件和灯光监控条件继续操作或关闭它并再次等待进入。如果有人对此有任何意见,欢迎所有反馈。同样,我是编程初学者,我很欣赏所有想法,但简单的想法最适合我!
【问题讨论】:
-
Python 通常不适合多线程应用程序。见here
-
@SanchitAnand 这不是您需要出色性能的情况。额外的价值来自交错执行和在 IO 操作发生时做一些事情。 Python 很好。
-
Python 中的线程存在混淆,因为最常见的解释器实际上并没有并行执行它们。您可以使用 Python 中的
multiprocessing模块充分利用多个 CPU 内核并在 进程(而不是一个进程中的线程)之间轻松通信。然后,它的用法与您在 C 或 Rust 中可能习惯的多线程相似。虽然我建议使用比 Python 更合适的语言来进行性能感知的多线程计算。我想说这在那个领域非常笨拙且不可预测。
标签: python multithreading loops if-statement conditional