>我有两个串行端口将数据输入Python。一种是馈送GPS串(每秒约4行)另一个从气体监测器馈送数据串(每秒约 1 行)
我想同时监控 GPS 和气体供给,并实时组合数据。我只需要通过串行端口接收数据。
我的问题是我似乎无法弄清楚如何同时运行两个 python 函数。
我有线程模块和多处理模块与 Python 2.7 一起安装。
关于组合串行信息的好方法的任何想法?这是我的第三个Python程序,所以请对我温柔一点:-)
代码如下:
import threading
import multiprocessing
def readGas():
global GAScount
global GASline
while GAScount<15:
GASline = gas.readline()
GasString = GASline.startswith('$')
if GasString is True:
print GASline
GAScount = GAScount+1
def readGPS():
global GPScount
global GPSline
while GPScount<50:
GPSline = gps.readline()
GPSstring = GPSline.startswith('$')
if GPSstring is True:
print GPSline
GPScount = GPScount+1
openGPS()
openGas()
我认为线程在您的情况下是一个不错的选择,因为您不希望频率很高。它将比多处理简单得多,因为内存在线程之间保持共享,您无需担心。唯一剩下的问题是,您的收购不会完全在同一时间进行,而是接一个接一个。如果你真的需要同步数据,你需要使用多处理。
对于线程:
import threading
# create your threads:
gps = threading.Thread(target=openGPS)
gas=threading.Thread(target=openGas)
#start your threads:
gps.start()
gas.start()
您现在有 2 个采集线程正在运行。由于 python 的全局解释锁,这不能同时正确,而是会在 2 个线程之间交替。
有关螺纹的更多信息 : https://pymotw.com/2/threading/有关 GIL 的更多信息 : https://wiki.python.org/moin/GlobalInterpreterLock