我有两个Python程序。我们称它们为Prog1.py和Prog2.py。Prog1正在帮助我从外部设备获取实时数据。到目前为止,当它获得数据时,它会在屏幕上打印出来。有一个while循环正在运行,在每次迭代中它都打印出所获取的新数据集。现在Prog2是一个使用PyQtGraph构建的Python程序,其目的是像监视器一样实时地绘制数据。到目前为止,Prog2所做的是(也就是说,当它单独运行时),它会绘制已经获得的数据。这是一个动人的情节。所以Prog2.py有一个update函数,这个函数由计时器以指定的时间间隔重复调用,以便用下一个数据点更新图形(使其向右移动)。我的目标是将Prog1和Prog2连接起来,也就是说,我希望通过管道将Prog1实时获取的数据传输到Prog2,以便Prog2能够实时地绘制数据。
因为Prog1和Prog2是独立的事件,有它们自己的事件循环过程,所以我不确定如何将它们链接起来。我认为一个天真的想法是并行运行Prog1.py和Prog2.py,并要求Prog1.py将数据保存到一个文件中(可能会对其进行pickle?)然后让Prog2.py从中读取,然后绘制图表。但我不相信这一点。这看起来很脏。我想在Prog1.py中运行整个Prog2.py代码。有没有一个干净的方法来做这个?
编辑- 代码
程序1.py
/*
Code to get data from USB
*/
def main():
while 1:
data = get_data()
print data
main()
py是PyQtGraph代码,通过totimer更新图形并使其滚动
你有几个选择,可能其中任何一个都有效:
将这些程序连接到一个单线程程序中,使用计时器检查新数据,并在数据到达时回复:
将程序分开,并使用某种形式的IPC套接字、管道等在它们之间进行通信。这将涉及序列化数据(如您所建议的,可能使用pickle)。
pyqtgraph.multiprocess
甚至允许在进程之间发送Qt信号。这可能是最困难的选择,但这里有一个简单的例子:相关问题 更多 >
编程相关推荐