为什么python tesserocr在AWS Batch上不使用4个CPU内核?

时间:2018-12-16 21:17:05

标签: docker amazon-ecs python-tesseract aws-batch

我正在尝试使tesserocr python库在4个内核上运行。根据tesseract文档,我了解它最多支持4个内核。我在一个具有8个vCPU的c4.x2large实例上的AWS Batch(基于amazonlinux:latest image的docker容器)中的AWS Batch内运行一个tesserocr python3.x作业,所有实例均在提交时分配给该批处理作业。

基准测试显示CPU的最大值为30%,即2.5个vCPU,即大约1.25个物理核心(每个2个vCPU大致为1个物理核心)。

我还尝试了OMP_NUM_THREADS = 4,OMP_THREAD_LIMIT = 4环境变量(基于一些在线论坛),但是没有任何值对性能有任何影响。

如何将tesserocr扩展到全部4个内核(8个vCPU)?

1 个答案:

答案 0 :(得分:0)

vCPU /内核的Python线程不是1:1。

如果您查看c4.x2large实例的规范,它表示每个内核最多可以运行2个线程。那台机器有8个vCPU。

可能使用所有可以的8个vCPU,请尝试设置OMP_NUM_THREADS=16OMP_THREAD_LIMIT=16。但是,底层tesserocr的实现方式将对其在计算机上下文中的扩展程度产生巨大影响。