我正在构建一个桌面应用程序,用于从快速相机(大约kHz帧频)获取数据。为了延长电影的长度,我将帧放入一个队列中,该队列被写入磁盘的单独进程所占用。
现在,我需要增加一些灵活性(我不是程序的用户),以便其他人可以在我的工作之上进行开发。通常的模式是,摄像机生成的数据可以由不同的进程使用(不仅保存到磁盘)。我不希望每个新人都必须更改基本代码,例如,通过为其过程创建新队列。
因此,我的问题是:有没有一种方法可以将numpy数组从一个进程广播到可变数量的其他进程?诸如信号和插槽在Qt中的工作方式之类的东西,但是在Python中是多进程安全的。
我遇到了 ZMQ ,这似乎很理想,但是找不到处理极端案例的人员的例子。例如,如果服务器正在广播但客户端很忙,会发生什么情况,这些帧是否会丢失?与队列相比,序列化2D numpy数组(大约1000x50 uint16)并在套接字的另一侧重构的效率如何?
我想要的模式是:
这样,即使子进程落后,也不会丢失任何帧。
我正在寻找有关模式的建议,但也在寻求使用的库的建议。 ZMQ在我的搜索中弹出了几次,但可能还有其他选择。主要部署环境是 Windows PC 。