首页 > 解决方案 > 关于模式的建议:将 numpy 数组广播到不同的进程。队列,ZMQ?

问题描述

我正在构建一个桌面应用程序,用于从快速相机(大约 kHz 帧速率)获取。为了延长电影的长度,我将帧放入一个队列中,该队列由一个正在写入磁盘的单独进程消耗。

现在我需要增加一点灵活性(我不是该程序的用户),以便其他人可以在我正在做的事情之上进行开发。一般模式是相机生成的数据可以被不同的进程使用(不仅仅是保存到磁盘)。我不希望每个新人都必须更改基本代码,例如为他们的流程创建一个新队列。

因此我的问题是:有没有办法将 numpy 数组从一个进程广播到可变数量的其他进程?类似于 Qt 中信号和槽的工作方式,但这在 Python 中是多进程安全的。

我遇到了ZMQ,这似乎很理想,但找不到在边缘情况下工作的人的例子。例如,如果服务器正在广播但客户端很忙,会发生什么情况,这些帧会被丢弃吗?与队列相比,序列化 2D numpy 数组(大约 1000x50 uint16)并在套接字的另一侧重建的效率如何?

我想的模式是:

这样,即使子进程落后,也不会丢失任何帧。

我正在寻找有关模式的建议,但也在寻找要使用的库。ZMQ 在我的搜索中多次弹出,但可能还有其他选项。主要部署环境是Windows PC

标签: pythonnumpydesign-patternszeromqpython-multiprocessing

解决方案


推荐阅读