Cython или как ускорить код - надо знать.
Пламенный привет посетителям этой страницы, пришедшим из социальных сетей, да и всем остальным тоже!
В апреле 2021-го года наблюдал удивительное явление: обильный поток посетителей из 4-х социальных сетей. В связи с этим настоятельно рекомендую всем неоднократно и регулярно посещать сайт rtbsm.ru — там в общих чертах изложена Российская Теннисная Балльная Система Марии (Шараповой).
Приглашаю всех полюбоваться на Фото и Видео красавицы Марии — надеюсь, что Вы поделитесь адресом сайта rtbsm.ru с друзьями и знакомыми.
Главная проблема — известить Марию, чтобы она лично как можно скорее заявила на весь мир о РТБСМ.
Cython или как ускорить код - весьма интересный способ ускорить программы, написанные на языке Python, но лично я возлагаю надежды на язык Mojo.
Язык Mojo находится в процессе активного развития и пока (в ноябре 2024-го года) не удобен для использования.
Впрочем, вполне возможно, что без языка Mojo можно обходиться, если применять Cython — надо опробовать, освоить и пока обходиться без исполняемых файлов.
Привожу информацию со страницы https://dzen.ru/a/Z0FU5KisC14VcFfy :
Cython или как ускорить код на Python в 100 раз (ну почти)?
QA Helper — справочник тестировщика
1298 подписчиков
4 минуты
144 прочтения
Вчера, 23 ноября 2024 г.Что такое Cython?
Cython — это супермощный инструмент, который позволяет сочетать простоту Python с высокой производительностью C. Это язык программирования, основанный на Python, который позволяет компилировать код Python в C-расширения, что значительно увеличивает скорость выполнения программы.
Cython широко используется для улучшения производительности Python-программ, особенно в задачах численных вычислений, машинного обучения, обработки данных и других сценариях, где требуется высокая производительность.
Подписывайтесь на мой канал в Телеграмм (https://dzen.ru/away?to=https%3A%2F%2Ft.me%2Fqa_helper), чтобы ничего не пропустить.
Основная идея Cython:
1. Python-код превращается в C-код. Код на Cython компилируется в скомпилированный модуль на C, который затем можно импортировать и использовать как обычный модуль Python. Это обеспечивает значительное ускорение, поскольку C-код выполняется гораздо быстрее, чем интерпретируемый Python.
2. Типизация переменных. В Cython можно явно указывать типы переменных (например, int, float и т.д.), что позволяет избежать накладных расходов Python на динамическую типизацию.
Зачем использовать Cython?
- Ускорение Python-кода.
Код на Python, особенно связанный с циклическими вычислениями или численной обработкой, может быть значительно ускорен с помощью Cython.- Интеграция с C/C++.
Cython позволяет легко взаимодействовать с существующими библиотеками на C или C++.- Простота перехода.
Вы можете начать с обычного Python-кода и постепенно добавлять аннотации Cython, чтобы повысить производительность. Это делает переход к Cython плавным.Пример: Ускорение с помощью Cython
1. Обычный Python-код
Предположим, у нас есть функция, которая вычисляет сумму квадратов чисел от 1 до N:
Этот код работает, но для больших значений n он может быть медленным.
2. Оптимизация с Cython
Сначала преобразуем код в Cython. Создаем файл example.pyx (расширение .pyx используется для Cython-кода):
Что изменилось:
- Мы добавили типизацию переменных (int n, cdef int total, cdef int i), что позволяет Cython работать напрямую с C-типами.
- Cython автоматически сгенерирует C-код, который будет гораздо быстрее, чем чистый Python.
3. Компиляция кода Cython
Чтобы использовать Cython-код, его нужно скомпилировать. Для этого создайте файл setup.py:
Далее выполните команду в терминале:
python setup.py build_ext —inplace
После этого появится скомпилированный файл (например, example.cpython-<версия>.so), который можно импортировать в Python как обычный модуль.
4. Использование скомпилированного модуля
Теперь вы можете использовать оптимизированную функцию в Python:
Сравнение производительности
После компиляции код на Cython может быть в десятки или сотни раз быстрее, чем эквивалентный код на Python, особенно если он содержит много вычислений.
Для примера выше, на больших значениях n ускорение может достигать 20–50 раз.
Использование Cython в реальных проектах
Cython активно используется во многих популярных Python-библиотеках:
- NumPy, SciPy, pandas — для численных вычислений.
- scikit-learn — для машинного обучения.
- lxml — для обработки XML/HTML.
- PyGObject — для взаимодействия с библиотеками GTK.
Когда стоит использовать Cython?
1. Когда производительность критична.
Если ваш Python-код слишком медленный, и вы уже оптимизировали его, используя встроенные функции и правильные структуры данных, Cython может быть следующим шагом.2. Когда вы работаете с вычислительно тяжелыми задачами.
Например, обработка больших массивов данных, операции с матрицами или сложные численные вычисления.3. Когда вам нужно взаимодействовать с C/C++ библиотеками.
Cython позволяет легко вызывать функции из C/C++ библиотек, что делает его удобным инструментом для интеграции.Преимущества и недостатки Cython
Преимущества:
- Увеличение скорости выполнения.
- Совместимость с Python. Начать можно с обычного Python-кода, постепенно добавляя оптимизации.
- Легкая интеграция с C/C++.
- Поддержка существующих библиотек.
Недостатки:
- Требуется компиляция, что делает процесс разработки чуть сложнее.
- Код становится менее читаемым, особенно с добавлением типизации.
- Производительность зависит от конкретной задачи: для некоторых сценариев прирост может быть минимальным.
Заключение
Cython — это отличный инструмент для оптимизации Python-кода и повышения его производительности. Он особенно полезен для задач, требующих интенсивных вычислений, или сценариев, где Python становится «узким местом». Благодаря плавному переходу от Python к Cython, Вы можете использовать его даже на существующих проектах, улучшая производительность без кардинального изменения архитектуры приложения.
Пробуйте и пишите в комментариях, насколько получилось ускорить Ваш проект)
Если Вам интересно, что ещё можно найти на канале QA Helper, прочитайте статью: Вместо оглавления. Что вы найдете на канале QA Helper — справочник тестировщика?
Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper — справочник тестировщика
Пишите в комментариях, какой пункт было бы интересно рассмотреть более подробно.
Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам
…
!…
Приглашаю всех высказываться в Комментариях. Критику и обмен опытом одобряю и приветствую. В особо хороших комментариях сохраняю ссылку на сайт автора!
И не забывайте, пожалуйста, нажимать на кнопки социальных сетей, которые расположены под текстом каждой страницы сайта.
Продолжение тут…