Throughput OCR-сервиса по CPU и RAM

EasyАлгоритмы
04:00
Лучше работает на десктопе
AlgorithmsCapacity PlanningPerformanceCPUMemory
EasyOffer00:35:05-00:41:27eo_video_1593_20260210_Tevian_Python_seniorСтраница собеса

Есть сервис распознавания документов. Один API-метод принимает изображение документа и возвращает JSON с распознанными полями.

QA замерил ресурсоемкость:

  • обработка одного изображения нагружает 1 CPU core;
  • обработка одного изображения занимает seconds_per_doc секунд;
  • во время обработки одно изображение занимает memory_gb_per_doc GB RAM.

На сервере есть cores CPU cores и ram_gb GB RAM.

Нужно посчитать safe throughput в документах в секунду. Одновременно можно обрабатывать не больше документов, чем позволяют CPU и RAM.

Сигнатура

def ocr_throughput(cores: int, ram_gb: float, seconds_per_doc: float, memory_gb_per_doc: float) -> float:

Верните число документов в секунду. Если результат дробный, округлите до 6 знаков.

Примеры

Пример 1

Вход:
cores = 20
ram_gb = 64
seconds_per_doc = 2
memory_gb_per_doc = 4
Выход:8

Исходный safe/worst-case из собеса

Пример 2

Вход:
cores = 20
ram_gb = 64
seconds_per_doc = 2
memory_gb_per_doc = 3.5
Выход:9

Optimistic memory estimate

Пример 3

Вход:
cores = 8
ram_gb = 32
seconds_per_doc = 4
memory_gb_per_doc = 2
Выход:2

CPU является bottleneck

Консоль
Нажмите Run или Ctrl+Enter для запуска