【发布时间】:2020-10-12 04:40:42
【问题描述】:
假设我有一个函数将在自己的线程中运行,因为它通过端口获取串行数据。
def serialDataIncoming ():
device = Radar()
device.connect(port 1, baudrate 256000)
serialdata = device.startscan
for count, scan in enumerate(serialdata):
distance = device.distance
sector = device.angle
现在我想在自己的线程中运行它
try:
thread.start_new_thread(serialDataIncoming())
except:
# error handling here
现在,我想添加到 serialDataIncoming() 的代码中,我将距离和扇区发送到另一个要处理的函数,然后发送到其他地方,现在这是这个问题,从“设备传入的数据” " 不断被发送,如果我在另一个循环中失去一些时间,我可能会遇到延迟甚至丢失一些数据,所以我想创建一个新线程并从该线程运行一个函数,该函数将从第一个接收数据线程和处理它并做任何事情。
def dataProcessing():
# random code here where I process the data
但是我的问题是,如何将两个变量从一个线程发送到第二个线程,在我看来,在多个线程中,第二个线程必须等到它接收到变量然后开始工作,它将被发送一个同时处理大量数据,因此我可能不得不引入第三个线程来保存这些数据,然后将其发送到处理的线程。
所以问题基本上是,我将如何在 python 中编写将 2 个变量发送到另一个线程,以及如何在第二个线程上使用的函数中编写?
【问题讨论】:
-
变量不是您可以“发送”的东西。变量是您可以存储值的位置。值是您可以发送的。 Python3 中有两种主要类型的值:“原始”值,例如数字和字符,以及“对象引用”。如果我的猜测是正确的,那么您的语句
device=Radar()创建一个新的Radar对象,然后将该对象的引用 存储到名为device的变量中。device变量和它所引用的Radar对象是两个不同的东西。