python - 如何直接在python代码中的tesseract中配置OMP_THREAD_LIMIT以禁用多处理?

标签 python multithreading multiprocessing environment-variables tesseract

这是我在stackoverflow中提出的第一个问题,因此请宽容...
我在使用docker-compose运行的项目中使用tesseract。我不知道如何直接在我的python文件中配置单个处理器核心。我想这样做是因为并行Tesseract时会出现速度慢和过度消耗的情况。
我发现了许多类似的主题,但它们仅涉及如何在命令行上配置OMP_THREAD_LIMIT。
这是在我的python代码中配置tesseract的方式:

__tesseract_config_without_dir = "--psm 3 --oem 1 --dpi 300"

TESSERACT_DATA = os.environ.get(
    "TESSDATA_PREFIX", "/usr/share/tesseract-ocr/4.00/tessdata/"
)

__tesseract_config = (
    __tesseract_config_without_dir
    + ' --tessdata-dir "{}"'.format(config.TESSERACT_DATA)
)
因此,我想在__tesseract_config中添加类似“OMP_THREAD_LIMIT = 1”的选项,但我不知道如何编写。
在tesseract文档中,我们仅找到以下信息:
“环境变量
OMP_THREAD_LIMIT
如果tesseract可执行文件是使用多线程支持构建的,则它将通常使用四个CPU内核进行OCR进程。虽然对于单个镜像来说这可能更快,但是如果主机提供的CPU内核少于四个,或者为许多镜像创建了OCR,则性能会很差。 OMP_THREAD_LIMIT = 1仅使用一个CPU内核。”
太感谢了。

最佳答案

要为Tesseract禁用多线程,我只是在代码的开头添加了

os.environ['OMP_THREAD_LIMIT'] = '1'

关于python - 如何直接在python代码中的tesseract中配置OMP_THREAD_LIMIT以禁用多处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63070716/

相关文章:

Python正则表达式非贪婪表现得像贪婪

java - 如何让线程一个接一个地运行?

python - 在python中的进程之间共享连续的numpy数组

python Pool result.get() block 信号处理程序

python - 分布式Python服务器的高效布局?

python - 为什么这个已弃用的 Factory.set_creation_function 的替代方法不能与 nosetests 一起使用?

python - 如何使用python在指定模式的子目录的特定级别中查找具有给定扩展名的文件?

c++ - std::lock_guard 和 #pragma omp critical 之间的区别

java - 是什么让 JavaFx 2 任务成功/失败

python - sklearn.ensemble.AdaBoostClassifier 不能接受 SVM 作为 base_estimator?