Python — довольно простой в освоении язык, по сравнению с некоторыми другими языками код на нём пишется очень быстро. Но в жертву приносится скорость выполнения кода.
Перепишем часть Python-кода в Rust и импортируем этот код в виде пакета Python в проект. Получим сверхбыстрый пакет Python, который сможем импортировать и использовать, как любой другой пакет. В качестве бонуса добавим многопроцессорность и в итоге получим функцию, которая примерно в 150 раз быстрее обычного кода на Python.
Обзор
Проблему решим в 6 шагов:
- Решим вопрос о том, почему функция медленная.
- Подготовим проект.
- Перепишем функцию в Rust.
- Скомпилируем код на Rust и разместим его в пакете Python.
- Импортируем пакет Python в проект.
- Выполним бенчмарк чистого Python и функции на Rust.
Пакет maturin скомпилирует Rust-код и преобразует его в готовый к работе пакет Python.
1. Решим вопрос о том, почему функция медленная
Важно понять, почему функция работает медленно. Давайте представим, что проекту требуется функция подсчёта количества простых чисел в диапазоне между двумя другими числами: