🔥 Какой базовый Docker-образ Python стоит выбирать для финансовых задач.
- В большинстве задач разница в скорости между образами не превышает ~10 %.
- Поэтому по умолчанию выгоднее брать маленький образ python:3.14-slim (~150 МБ), а не тяжёлые Anaconda/Intel (~3 ГБ).
- Исключение — тяжёлая линейная алгебра на Intel CPU: там MKL даёт заметное ускорение (1.1×–2×).
Реальный кейс из хедж-фонда
- Команда использовала Intel Python для ночных batch-задач.
- После перехода на python:3.14-slim джобы ускорились примерно на 40 %, без изменения кода.
- Причина — выигрыш дал новый интерпретатор Python 3.14, а не библиотека MKL, потому что нагрузка была больше про pandas и бизнес-логику, чем про чистые матрицы.
Ключевая идея:
меньше время обработки — быстрее решения и реакции рынка.
Как выбирать образ: простое «дерево решений»
1️⃣ По CPU
AMD (Ryzen, EPYC, Threadripper)
- Использовать python:3.14-slim.
- MKL из Intel Python / Anaconda на AMD часто даже медленнее из-за особенностей оптимизаций.
Intel (Xeon, Core)
- Если основная нагрузка — плотная линейная алгебра (умножение матриц, SVD и т. д.), тогда имеет смысл Intel Python или Anaconda (MKL).
- Если ETL, pandas, смешанные пайплайны — python:3.14-slim почти не уступает, но гораздо легче.
2️⃣ По типу нагрузки
- IO-bound (файлы, сети, БД) — образ почти не влияет, выигрывает slim из-за размера.
- ETL на pandas/Polars — разница 5–10 %, slim обычно оптимален.
- BLAS-heavy (NumPy-линейка)
- Intel CPU — MKL-образы могут дать 1.5–2× ускорение.
- AMD CPU — OpenBLAS в slim обычно быстрее.
- CPU-bound Python (циклы, логика) — важен сам интерпретатор и multiprocessing.
GIL и параллелизм
- GIL не даёт потокам ускорять CPU-bound задачи.
- Для CPU-bound лучше применять multiprocessing, ProcessPoolExecutor, joblib, Numba.
- BLAS (NumPy) параллелится сам — потоками на уровне C-кода, GIL не мешает.
Почему Python 3.14 так важен
- Интерпретатор 3.14 даёт +10–20 % к производительности CPU-bound кода.
- Intel Python и Anaconda пока чаще держатся на 3.12 — из-за этого они иногда медленнее даже при наличии MKL.
Общий практический вывод
- Начинать почти всегда стоит с python:3.14-slim — он компактный, быстрый и современный.
- Идти в Intel/Anaconda только если:
- у вас Intel-сервер,
- значимая часть времени уходит на чистую линейную алгебру,
- замеры показывают реальную выгоду.
Если коротко:
бери самый маленький образ по умолчанию и отходи от него только тогда, когда честные бенчмарки на твоём железе доказывают обратное.
https://jiripik.com/2025/12/19/choosing-the-right-python-docker-image-for-finance-workloads/
Post #2006
1.36K