首页 > 解决方案 > 在 Python (Pyzbar) 中利用多个 CPU 内核进行 QR 读取

问题描述

的背景:

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

在此处输入图像描述

问题:

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

我的(假设的)解决方案:

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

问题:

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

标签: pythonasynchronousparallel-processingqr-codemulticore

解决方案


推荐阅读