【发布时间】:2019-09-18 12:54:49
【问题描述】:
GNU-parallel 和 python multiprocessing 模块有什么区别?如果它们的用法不同,那么哪一个最适合哪种情况。
我正在尝试并行化 tesseract,发现有人在 tesseract 问题上推荐 GNU parallel here。
我想了解哪一个最适合哪个用例,然后再选择另一个。
另外,我没有从 gnu-parallel 获得想要的结果,我可以看到 top 中运行了 4 个进程,但它们比 python 多处理花费更多的时间。
1)对于 gnu 并行:
如here所示,所用时间为 8 分 40 秒
我正在使用以下命令:
ls image*.jpg | time parallel tesseract {} stdout -l hin
顶部输出是here
2) 使用多页功能的普通 Tesseract。
$ time tesseract imagelist.txt stdout -l hin
速度可见here
3) 基于多处理的 pytesseract
将速度提高到大约 4-5 秒。
可以找到我的pdf here
我正在使用convert_from_path from pdf2image 或convert from imagemagick 将pdf 转换为image 作为png 或jpeg。
【问题讨论】:
-
鉴于 GNU Parallel 需要 8 分 40 秒,而普通的多页 tesseract 需要 0 分 12 秒,我认为他们没有做同样的事情。时间差简直太大了。如果您使用 GNU Parallel 运行第一次运行,也许 tesseract 以某种方式缓存了输出,而其他运行则简单地使用了缓存。
-
@OleTange:嗨,Ole 感谢您的回复!我不认为,所以问题出在缓存上(虽然我不明白这是怎么发生的,并且很想知道更多),因为我的朋友没有 gnu-parallel 安装速度相同。我仍然在想我可能错误地使用了
gnu-parallel,或者其他一些原因。我可以在这里链接到 pdf 或图像,如果您想自己测试它们,这也会有很大的帮助。 -
请做。这样问题就会成为 MCVE。
-
@OleTange :我在底部的问题中添加了 pdf 链接
-
哇!我实际上可以重现您的发现:tesseract 变得非常缓慢。如果你运行
--tty -j+0,它会更快,但多页功能是最快的。
标签: python multiprocessing tesseract gnu-parallel