GNU-parallel和 python多处理模块有什么区别?以及哪一个是哪种情况的理想选择,如果它们的用法不同。
我正在尝试并行化 tesseract,并发现有人在这里推荐GNU 并行处理 tesseract问题。
我想了解,在选择其中一个之前,哪一个是哪个用例的理想选择。
另外,我没有从gnu-parallel中获得预期的结果,我可以看到 4 个进程在top
运行,但它们比 python 多处理花费更多的时间。
1(对于 GNU 并行:
所需时间为 8 分 40 秒
,如下所示我正在使用以下命令:
ls image*.jpg | time parallel tesseract {} stdout -l hin
顶部输出在这里
2(使用多页功能的普通镶嵌。
$ time tesseract imagelist.txt stdout -l hin
速度可以在这里看到
3( 基于多处理的 pytesseract
将更大的速度提高到大约 4-5 秒。
可以找到我的pdf这里
我正在使用convert_from_path from pdf2image
或convert from imagemagick
将pdf
转换为image
作为png
或jpeg
。
在python多处理中,你可以在进程之间进行通信。但是,您就有了同步的成本。GNU Pararell 使用不同的参数多次运行命令。然后,您需要在其他过程中聚合结果。
这里分析了这个问题: https://github.com/tesseract-ocr/tesseract/issues/3109
溶液:
export OMP_THREAD_LIMIT=1
在并行运行tesseract
之前。