> Сколько ядер нужно для обработки миллиона пользователей за 4 часа, если расчет одного пользователя занимает 1 секунду? (Python)

Уровень: middle · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: АФЛТСистемс

Стек: Python

> Пример ответа

Для обработки 1 миллиона пользователей за 4 часа (14 400 секунд) при времени расчета 1 секунда на пользователя требуется:

1 000 000 / 14 400 ≈ 69,4 → минимум 70 ядер при идеальной параллелизации.

Однако на практике нужно учитывать:

  • Накладные расходы на синхронизацию, I/O, GIL (если Python без многопроцессности).
  • Закон Амдала: если 10% кода последовательны, ускорение ограничено 10x, и потребуется больше ядер.
  • Рекомендация: использовать 80-100 ядер с запасом (например, 4 машины по 24 ядра) и асинхронный подход (asyncio + multiprocessing).

Пример оценки с учетом GIL:

PYTHON
# Для CPU-bound задач используем multiprocessing.Pool
from multiprocessing import Pool
import time
def process_user(user_id):
# симуляция расчета 1 сек
time.sleep(1)
return user_id
if __name__ == '__main__':
users = range(1_000_000)
with Pool(processes=70) as pool:
results = pool.map(process_user, users, chunksize=1000)

При 70 ядрах время составит ~4.2 часа (с учетом накладных расходов). Для гарантии 4 часов берите 80-90 ядер.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью