Numba — это открытый JIT-компилятор для языка Python, предназначенный для ускорения численных вычислений путём компиляции подмножества Python и выражений NumPy в машинный код. Он использует инфраструктуру LLVM для генерации высокопроизводительного кода на лету, что позволяет выполнять вычисления значительно быстрее по сравнению с интерпретируемым исполнением CPython, особенно в случаях циклов и массивных численных операций. Numba ориентирован на сценарии научных расчётов, обработки данных и численного моделирования, где важна производительность без полной миграции на статически типизированные языки.
Проект предоставляет механизм аннотаций и декораторов, с помощью которых разработчик указывает функции, подлежащие компиляции во время исполнения. Компилятор анализирует типы аргументов при первом вызове и создаёт специализированные версии функций, оптимизированные под конкретные типы и размеры данных. Кроме того, Numba поддерживает различные режимы выполнения, включая однопоточную и параллельную обработку на CPU, а также генерацию кода для некоторых моделей GPU, что расширяет область применения в задачах, где задействованы массивы и векторизованные операции.
- JIT-компиляция: компиляция функций во время исполнения с генерацией нативного машинного кода через LLVM.
 - Поддержка NumPy: ускорение операций над массивами и многих функций NumPy без необходимости переписывать код на других языках.
 - Специализация по типам: создание оптимизированных версий функций на основе типов аргументов при первом вызове.
 - Параллельное выполнение: механизмы для распараллеливания циклов и использования многопоточности на CPU.
 - Поддержка GPU: возможность генерации кода для выполнения на совместимых графических процессорах (через соответствующие адаптеры и бэкенды).
 - Интеграция с Python: совместимость с большинством конструкций Python и лёгкость интеграции в существующие проекты без значительных изменений кода.
 - Производительность: снижение накладных расходов интерпретатора и ускорение критических вычислительных участков программы.
 - Кроссплатформенность: работа на различных операционных системах и аппаратных архитектурах при наличии соответствующих компонентов LLVM и драйверов.
 - Тонкая настройка: возможности для управления оптимизациями, целевыми бэкендами и поведением компиляции через параметры и декораторы.
 - Ограничения: поддерживает не все конструкции Python и требует внимания к совместимости типов и используемых функций при переносе кода под JIT.