В этой статье мы поговорим о компиляторах и интерпретаторах Python и обсудим 7 самых популярных из них: CPython, Jython, IronPython, ActivePython, Nuitka, PyJS и Stackless Python.
Итак, давайте начнем.
Компиляторы и интерпретаторы Python
Возможно, вы слышали, что Python называется интерпретируемым языком программирования. Это означает, что компилятор преобразует исходный код (.py-файл) в байт-код (.pyc-файл), который затем исполняется виртуальной машиной Python (PVM).
А теперь рассмотрим наш список компиляторов и интерпретаторов Python:
1. CPython
Это наиболее распространённая, эталонная реализация Python. CPython может быть определен как интерпретатор и компилятор, поскольку он компилирует код Python в байт-код перед его интерпретацией.
Характеристики:
- Разработчики: разработчики Python и сообщество Python, при поддержке Python Software Foundation
- Последняя версия: 3.8.2 (24 февраля 2020)
- Написан на: C
- Тип: интерпретатор Python
Особенностью CPython является то, что он использует глобальную блокировку интерпретатора (GIL) для каждого процесса интерпретатора CPython. Это означает, что в рамках одного процесса в любой момент времени только один поток может обрабатывать байт-код Python. Параллельное выполнение кода может быть достигнуто только с помощью отдельных процессов интерпретатора CPython, которыми управляет многозадачная ОС. В Python есть модуль multiprocessing, который упрощает создание процессов.
2. Jython
Jython является преемником JPython. Это реализация Python для виртуальной машины Java. Jython одновременно и компилятор, и интерпретатор.
Характеристики:
- Первый выпуск: 17 января 2001
- Последняя версия: 2.7.2 (21 марта 2020)
- Написан на: Python и Java
- Тип: интерпретатор Python
Jython компилирует исходный код Python в байт-код Java. Это означает, что мы можем запустить его на любой машине, на которой работает JVM (виртуальная машина Java). Программы, выполняемые в среде Jython, могут одновременно использовать классы языков Java и Python.
3. IronPython
Это реализация Python, предназначенная для платформы Microsoft .NET или Mono.
Характеристики:
- Автор: Джим Хугунин
- Первый выпуск: 5 сентября 2006
- Последняя версия: 2.7.9 (Октябрь 9, 2018)
- Написан на: C#
- Тип: интерпретатор Python
IronPython поддерживает динамическую компиляцию и интерактивную консоль. Скрипты Python могут взаимодействовать с объектами .NET.
4. ActivePython
ActivePython — это дистрибутив интерпретатора языка программирования Python от компании ActiveState. Распространяется в версиях для Microsoft Windows, Windows NT, Mac OS X, Linux, Solaris, AIX и HP-UX. ActivePython включает более 300 популярных пакетов Python, прошедших предварительную проверку на наличие устаревших или уязвимых версий, несовместимости и неправильного лицензирования.
5. Nuitka
Nuitka — это транспайлер, который транслирует код Python в исполняемые файлы или исходный код C/C++.
Характеристики:
- Разработчики: Кей Хайен, сообщество
- Последняя версия: 0.6.5 (30 июля 2019)
- Тип: транспайлер
Nuitka работает с различными версиями Python и позволяет создавать автономные приложения, даже когда Python не установлен на целевом компьютере.
6. PyJS
PyJS — это фреймворк для для разработки веб-приложений. Он позволит вам использовать Python для разработки как клиентской части веб-приложений, так и десктоп-приложений.
Характеристики:
- Автор: Джеймс Таубер
- Первый выпуск: март 2007
- Последняя версия: 0.8.1a (6 мая 2012)
- Написан на: Python, JavaScript
Раньше PyJS назывался Pyjamas. Он транслирует ваш код Python в JavaScript и позволяет запускать его в браузере. PyJS поставляется с AJAX-фреймворком и библиотекой виджетов.
7. Stackless Python
Stackless Python — это интерпретатор Python. Он назван так из-за отказа от использования стандартного стека вызовов языка C в пользу собственного стека.
Характеристики:
- Автор: Кристиан Тисмер
- Первый выпуск: 1998
- Последняя версия: 3.6.6 (12 сентября 2018)
- Написан на: C, Python
- Тип: интерпретатор Python
Особенностью Stackless являются микропотоки (microthreads), которые позволяют избежать чрезмерного расхода системных ресурсов, присущего стандартным потокам операционной системы. В дополнение к стандартным возможностям Python, Stackless добавляет поддержку сопрограмм, коммуникационных каналов и сериализации задач.
Итак, мы рассмотрели некоторые из самых популярных компиляторов и интерпретаторов Python. И можем заключить, что Python не ограничивается только CPython, основной реализацией. Также существуют другие реализации, среди которых можно выбрать ту, которая больше всего подходит для решения поставленных задач.