背景:
我们需要解析很多二维码。我们有一个主要的过程,可以像消防水管一样生成图像流(参见下面的示例)。对于解析,我们使用 Pyzbar。到目前为止,这是我们在 Python 中发现的最快的库,它也是最能容忍低质量照片的库。硬件为 NVidia Jetson Nano,具有 4 核 CPU、4GB 内存。我们可以选择在本地网络上的两个不同的 Jetson Nano 上部署主进程和 QR 解析。云不是一种选择,我们离线运行。
问题:
我们如何将解析二维码扩展到多个 CPU 内核?在我看来,Python 中的多线程不是答案。
我的(假设)解决方案:
我的想法是运行 4 个相同的进程来解析 QR 码,使用 RAM 驱动器在它们之间分配工作负载。主进程会将图像放到 RAM 驱动器中。将图像移动到其自己的文件夹的第一个 QR 读取过程得到了工作。将文件系统视为信号量假设文件移动是一个原子操作,并且对于多个饥饿的进程是安全的(是吗?)。解析结果可以通过使用文件名作为 ID 的简单 HTTP 调用传回主进程。
问题: