项目描述:
将现有的“C”程序(主控件)连接到 Python GUI/Widget。为此,我使用了 FIFO。C 程序旨在查看基于帧的遥测。
Python GUI 执行两个功能:
- 根据用户的需要(单个 .py 文件,不同用户编写的脚本)通过 GUI 小部件运行/创建绘图(可能通过 matplotlib 创建)
- 在创建后将帧号中继到 python 绘图脚本,以便在从主程序获得帧号后它们可以“更新”自己。
我有几个问题——了解这里看到的多处理与多线程的优缺点:Multiprocessing vs Threading Python
实施注意事项:
我猜,在基于信号的架构中通过线程创建的图太多,在更新它们方面可能会变得滞后。我不确定它们什么时候会受到 CPU 的限制……大多数情节会更新几行系列,有些可能会更新图像。无论创建方法如何,无论我选择哪种方式,它都可能会滞后。
我不确定打开 30 个 python 进程是什么,每个进程使用 matplotlib 制作一两个绘图对机器或其资源有什么作用。我在我的系统上看到一个简单的 matplotlib 图的 RSS(分配的内存)为 117M,所以我认为如果通过为每个图打开单独的进程来完成,单个用户绘制 30 个图不会限制系统内存。(16 GB,32 核 Linux Box,同时有多个用户)
问题:
- 我是否应该通过线程或进程打开绘图,并且其中一个会比另一个滞后?
- 如果我使用线程,是否有人知道在单个线程上变得滞后之前需要更新多少 matplotlib 数字?
- 如果我将绘图创建为进程,我应该使用 multiprocessing 包吗?我猜这个 API 可以直接在进程之间传递帧号?
- 鉴于我有可用的多处理,尝试通过 POpen 打开进程可能很愚蠢,对吗?我猜是这种情况,因为如果我这样做,我将不得不自己设置所有管道/IPC,这会更有效吗?