基于另一个循环的条件中断一个循环-Python

基于另一个循环的条件中断一个循环-Python,python,python-3.x,while-loop,multiprocessing,conditional-statements,Python,Python 3.x,While Loop,Multiprocessing,Conditional Statements,我正在编写一个脚本,通过串行通信线路从连接到压力传感器的MCU接收数据 我的想法是在一个循环中不断轮询MCU以获取压力信息,并在另一个循环中收集数据。一旦压力不再恒定,我希望能够停止数据采集 有两个while循环,一个轮询MCU,另一个收集数据,但我需要它们同时运行,以便轮询循环可以向收集循环提供停止的条件 #Loop that polls MCU def poll(serial_data): data = serial_data while data_in: _, pres

我正在编写一个脚本,通过串行通信线路从连接到压力传感器的MCU接收数据

我的想法是在一个循环中不断轮询MCU以获取压力信息,并在另一个循环中收集数据。一旦压力不再恒定,我希望能够停止数据采集

有两个
while
循环,一个轮询MCU,另一个收集数据,但我需要它们同时运行,以便轮询循环可以向收集循环提供停止的条件

#Loop that polls MCU
def poll(serial_data):
  data = serial_data
  while data_in:
      _, pressure = Get_data(data, 2000)
      difference = np.diff(pressure[:,1])

      if (all(i<1000 for i in difference) and all(i>-1000 for i in difference)):
          print('Pressure constant. Start collecting.')
          return True
      else:
          print('Pressure is not constant.') #break 2nd loop on this condition
          return False

def some_other_function(serial_data):
  input = ""
  data = serial_data
  #Loop to continously gather data
  while (poll(data) == True): # I realise this line probably isn't correct
     input_bytes = serial_data.read()
     input_string = str(input_bytes,'utf-8')
     input += input_string

  # Want to break 1st loop now that data collection has stopped
#轮询MCU的循环
def轮询(串行_数据):
数据=串行数据
当数据处于以下状态时:
_,压力=获取数据(数据,2000年)
差值=np.差值(压力[:,1])
如果(所有(i-1000表示差异中的i)):
打印('压力恒定。开始收集')
返回真值
其他:
打印(“压力不恒定”)#在这种情况下,断开第二个循环
返回错误
定义一些其他功能(串行数据):
input=“”
数据=串行数据
#循环以持续收集数据
while(poll(data)==True):#我意识到这句话可能不正确
输入字节=串行数据。读取()
输入字符串=str(输入字节,'utf-8')
输入+=输入字符串
#现在数据收集已停止,是否要中断第一个循环

为此,我一直在研究多重处理,但不确定如何实现它,以使一个循环依赖于另一个循环。

为什么不能将它放在
某些其他功能的一个循环中?有些问题:在
Poll
中有一个参数
data
,在
中循环
data\u,然后再次使用
data
。我想那是个错误?在
Some_other_函数
中,您再次获得
数据
作为参数,但您调用
Poll
时没有任何参数-这不起作用,因为
Poll
需要一个参数。也许您想将
数据
作为
轮询
的参数?或者,
input\u bytes
?@Igle我在其他一些函数中没有将它们放在同一个循环中,因为调用的Get\u data函数涉及获取用户指定数量的点并检查它们。这样做的方法与您在其他函数中看到的类似。据我所知,这样做意味着收集数据,停下来检查压力是否恒定并重复。我需要不断地收集数据,以避免丢失有价值的信息。@TobiasBrösamle感谢您的提问。我已经更新了我的代码,希望有助于理解。因此,如果我从您写给Igle的内容中正确理解,您希望
poll
连续运行,在那里暂停一段时间
一些其他函数需要处理while循环体的一次迭代,而不需要?