利用多个 CPU 内核在 Python (Pyzbar) 中读取二维码

时间:2021-04-04 12:17:30

标签: python asynchronous parallel-processing qr-code multicore

背景:

我们需要解析很多二维码。我们有一个主要的过程,可以像消防水管一样生成图像流(参见下面的示例)。对于解析,我们使用 Pyzbar。到目前为止,这是我们在 Python 中发现的最快的库,它也是最能容忍低质量照片的库。硬件为 NVidia Jetson Nano,具有 4 核 CPU、4GB 内存。我们可以选择在本地网络上的两个不同的 Jetson Nano 上部署主进程和 QR 解析。云不是一种选择,我们离线运行。

enter image description here

问题:

我们如何将解析二维码扩展到多个 CPU 内核?在我看来,Python 中的多线程不是答案。

我的(假设)解决方案:

我的想法是运行 4 个相同的进程来解析 QR 码,使用 RAM 驱动器在它们之间分配工作负载。主进程会将图像放到 RAM 驱动器中。将图像移动到其自己的文件夹的第一个 QR 读取过程得到了工作。将文件系统视为信号量假设文件移动是一个原子操作,并且对于多个饥饿的进程是安全的(是吗?)。解析结果可以通过使用文件名作为 ID 的简单 HTTP 调用传回主进程。

问题:

  1. 我关于文件移动是原子性的假设是否正确?
  2. 我的解决方案似乎过度设计。可以通过 C# 中的简单 ThreadPool 调用来完成相同的工作。欢迎任何更简单/更好的解决方案。除了硬件是 Nvidia Jetson Nano,我们的手是相当自由的。为了让我们的代码库、开发环境和部署过程保持简单,最好坚持使用 Python。

0 个答案:

没有答案
相关问题