ЧАСТЬ I. ФУНДАМЕНТАЛЬНЫЕ ПОДХОДЫ 25
1 Острая нехватка производительности при обработке данных 2
2 Извлечение максимума возможного из встроенных средств Python 46
3 Конкурентность, параллелизм и асинхронная обработка 77
4 Высокопроизводительный NumPy 117
ЧАСТЬ II. АППАРАТНОЕ ОБЕСПЕЧЕНИЕ 153
5 Реализация критически важного кода с помощью Cython 155
6 Иерархия памяти, хранение данных и работа с сетью 192
ЧАСТЬ III. ПРИЛОЖЕНИЯ И БИБЛИОТЕКИ ДЛЯ СОВРЕМЕННОЙ ОБРАБОТКИ ДАННЫХ 217
7 Высокопроизводительный pandas и Apache Arrow 219
8 Хранение больших данных 256
ЧАСТЬ IV. ПРОДВИНУТЫЕ ВОЗМОЖНОСТИ 289
9 Анализ данных с использованием графического процессора 291
10 Анализ больших данных с использованием библиотеки Dask 321
Приложение А. Настройка окружения 353
Приложение Б. Использование Numba для создания эффективного низкоуровневого кода 357
Предметный указатель 365
Быстрый код на чистом Python, оптимизированные библиотеки и аппаратное обеспечение, позволяющее использовать все преимущества параллельной обработки данных, – это цена входа в мир машинного обучения и анализа больших данных. Книга, которую вы держите в руках, предлагает уникальные техники ускорения с акцентом на большие данные и станет вашим надежным проводником в мир оптимизации решений на базе Python. Вы узнаете, как оптимизировать работу со встроенными структурами данных и ускорить решения за счет конкурентного выполнения, а также научитесь сокращать объем занимаемой данными памяти без ущерба для их точности.
Ознакомившись с тщательно проработанными примерами, вы узнаете, как добиться большей производительности популярных библиотек, таких как NumPy и pandas, и как эффективно обрабатывать и хранить данные. В книге используется целостный подход к повышению эффективности решений, так что вы научитесь оптимизировать и масштабировать целые системы – начиная от кода и заканчивая архитектурой.
Книга предназначена для разработчиков Python, знакомых с основами языка и принципами конкурентных вычислений.