目的:我想通过ui界面绘制多路实时曲线,单核多线程无法满足需求,因此我考虑采用多进程。
思路:我采用qt-designer自动生成test.ui和test.py文件,然后通过myUi = test.Ui_MainWindow(),将ui用myUi代替。我想直接将myUi作为参数,传给子进程里面运行的函数(每个子进程采集、绘制一路数据),最终实现多进程对ui界面进行修改,实现多路实时曲线绘制。
问题:多线程能直接将myUi传入子线程中的函数,然后在该函数中进行数据绘制的操作【myUi.plotwidget.plot(list_value, pen='r')】,如第一张图所示。但是子进程好像不能这样,如第二张图所示,麻烦各位帮帮忙,看能不能实现,谢谢各位。
大概看了下需求
不知道这么理解是否是你的需求
1、在UI 界面增加个方法, 接收数据画图(多个曲线都可以画,输入路线和数值即可)
2、各个线程负责送数据给这个方法即可。
如果是这样,可以考虑用pubsub 完成进程通信。
参考下我在 wxpython 里的例子
可以实现,但有点麻烦,不是你这么处理就行的。
实时曲线意味着:实时读取(包括采集数据或仿真计算输出数据),动态刷新。也就是说,即使是 单路,也是多线程的。
至于多路,更复杂一些,但原理是一样的。
动态刷新,就要在 UI 设置对象画布,然后定时或动作触发重新绘图。
可以参见 Python 小白从零开始 PyQt5 项目实战(8)汇总篇(完整例程) https://blog.csdn.net/youcans/article/details/120925109