Jump to content

CPython

(Перенаправлено с Unladen Swallow )
CPython
Оригинальный автор(ы) Гвидо ван Россум
Разработчик(и) Основные разработчики Python и сообщество Python при поддержке Python Software Foundation.
Первоначальный выпуск 26 января 1994 г .; 30 лет назад ( 1994-01-26 )
Стабильная версия
3.12.0 [1]  Отредактируйте это в Викиданных / 2 октября 2023 г .; 10 месяцев назад ( 2 октября 2023 г. )
Репозиторий https://github.com/python/cpython
Написано в С , Питон
Платформа 42 платформы; см . § Распространение
Доступно в Английский
Тип Интерпретатор языка программирования Python
Лицензия Лицензия Фонда программного обеспечения Python
Веб-сайт www .python .org

CPython эталонная реализация языка программирования Python . Написанный на C и Python, CPython является стандартной и наиболее широко используемой реализацией языка Python.

CPython можно определить как интерпретатор , так и компилятор, поскольку он компилирует код Python в байт-код перед его интерпретацией. Он имеет внешний интерфейс функций с несколькими языками, включая C, в котором необходимо явно писать привязки на языке, отличном от Python.

Особенностью CPython является то, что он использует глобальную блокировку интерпретатора (GIL) для каждого процесса интерпретатора CPython , что означает, что в пределах одного процесса только один поток может обрабатывать байт-код Python в любой момент времени. [2] нет смысла Это не означает, что в многопоточности ; наиболее распространенный сценарий многопоточности — это когда потоки в основном ожидают завершения внешних процессов.

Это может произойти, когда несколько потоков обслуживают отдельных клиентов. Один поток может ожидать ответа клиента, а другой может ожидать выполнения запроса к базе данных , в то время как третий поток фактически обрабатывает код Python.

Однако GIL означает, что CPython не подходит для процессов, которые реализуют ресурсоемкие алгоритмы в коде Python, который потенциально может быть распределен по нескольким ядрам.

В реальных приложениях ситуации, когда GIL является существенным узким местом, довольно редки. Это связано с тем, что Python по своей сути является медленным языком и обычно не используется для операций с интенсивным использованием ЦП или операций, чувствительных ко времени. Python обычно используется на верхнем уровне и вызывает функции в библиотеках для выполнения специализированных задач. Эти библиотеки обычно не написаны на Python, и код Python в другом потоке может выполняться во время вызова одного из этих базовых процессов. Библиотека, не относящаяся к Python, вызываемая для выполнения ресурсоемкой задачи, не подпадает под действие GIL и может без ограничений одновременно выполнять множество потоков на нескольких процессорах.

Параллелизм кода Python может быть достигнут только с помощью отдельных процессов интерпретатора CPython, управляемых многозадачной операционной системой . Это усложняет взаимодействие между параллельными процессами Python , хотя модуль многопроцессорности несколько смягчает это; это означает, что приложения, которые действительно могут извлечь выгоду из одновременного выполнения кода Python, могут быть реализованы с ограниченными накладными расходами .

Наличие GIL упрощает реализацию CPython и упрощает реализацию многопоточных приложений, которые не получают преимуществ от одновременного выполнения кода Python. Однако без GIL многопроцессорные приложения должны гарантировать, что весь общий код является потокобезопасным.

Хотя было сделано много предложений по отмене GIL, общее мнение заключалось в том, что в большинстве случаев преимущества GIL перевешивают недостатки; в тех немногих случаях, когда GIL является узким местом, приложение должно быть построено на основе многопроцессорной структуры. Чтобы обеспечить больший параллелизм, в октябре 2023 года было выпущено улучшение, позволяющее использовать отдельный GIL для каждого субинтерпретатора в одном процессе Python, которое было описано как «потоки с возможностью совместного использования». [3] [4]

После нескольких дебатов в 2023 году был запущен проект, предлагающий сделать GIL необязательным в версии Python 3.13. [5] релиз которого запланирован на октябрь 2024 года. [6]

Ненагруженная ласточка

[ редактировать ]

Unladen Swallow — это оптимизационная ветвь CPython, призванная быть полностью совместимой и значительно более быстрой. Компания стремилась достичь своих целей, дополнив специальную виртуальную машину созданным CPython JIT-компилятором, с использованием LLVM .

В проекте была поставлена ​​цель повысить скорость в пять раз по сравнению с CPython; [7] эта цель не была достигнута. [8]

Спонсором проекта выступила компания Google , а владельцы проекта Томас Воутерс, Джеффри Ясскин и Коллин Винтер являются штатными сотрудниками Google; однако большинство участников проекта не были сотрудниками Google. [9] Unladen Swallow размещался на Google Code . [10]

Как и многие другие вещи, связанные с языком Python, название Unladen Swallow является отсылкой к Монти Пайтону , в частности, к шутке о скорости полета порожних ласточек в фильме «Монти Пайтон и Святой Грааль» .

Несмотря на то, что Unladen Swallow не достиг всех опубликованных целей, он все же создал некоторый код, который был добавлен в основную реализацию Python, например улучшения модуля cPickle. [11]

В июле 2010 года некоторые наблюдатели высказывали предположения о том, мертв ли ​​проект или умирает, поскольку контрольный показатель четвертого квартала 2009 года еще не был опубликован. [12] Трафик в списке рассылки Unladen снизился с 500 сообщений в январе 2010 года до менее 10 в сентябре 2010 года. [13] Также сообщалось, что Unladen потеряла финансирование Google. [14] В ноябре 2010 года один из основных разработчиков объявил, что «Джеффри и меня привлекли к другим проектам, более важным для Google». [15]

Отделение разработки четвертого квартала 2009 года было создано 26 января 2010 года. [16] но никакой рекламы на сайте не было. Кроме того, что касается долгосрочных планов, а также поскольку проект пропустил выпуск Python 2.7, было предложено предложение по расширению Python (PEP). [8] был принят, в котором предлагалось объединить Unladen Swallow в специальную ветку py3k-jit официального репозитория Python . По состоянию на июль 2010 года эта работа продолжалась. [17] Это слияние заняло бы некоторое время, поскольку Unladen Swallow изначально был основан на Python 2.6. [18] с которым Python 3 нарушил совместимость ( см. Python 3000 подробнее ). Однако впоследствии PEP был отозван.

В начале 2011 года стало ясно, что проект остановлен. [19]

История релизов Unladen Swallow

[ редактировать ]
  • 1 квартал 2009 г. [20]
  • 2 квартал 2009 г. [21]
  • Третий квартал 2009 г.: сокращение использования памяти, повышение скорости [22]

Распределение

[ редактировать ]

Официально поддерживаемыми платформами уровня 1 являются Windows , Linux и macOS . (Также ОС Raspberry Pi и Linux для s390x на нижнем уровне.)

На других платформах есть рабочие реализации, в том числе: [23]

Unix-подобный
Специальные и встроенные
Другой

ПКП 11 [24] перечисляет платформы, которые не поддерживаются в CPython Python Software Foundation . Эти платформы по-прежнему могут поддерживаться внешними портами. Эти порты включают в себя:

  • AtheOS (не поддерживается с версии 2.6)
  • BeOS (не поддерживается с версии 2.6)
  • DOS (не поддерживается с версии 2.0)
  • IRIX 4 (не поддерживается с версии 2.3)
  • IRIX 5 и более поздние версии (не поддерживается с версий 3.2, 3.7) [25]
  • Mac OS 9 (не поддерживается с версии 2.4)
  • MINIX (не поддерживается с версии 2.3)
  • OpenVMS (не поддерживается с версии 3.3)
  • OS/2 (не поддерживается с версии 3.3)
  • ОС RISC (не поддерживается с версии 3.0)
  • Windows XP (не поддерживается с версии 3.5)
  • Windows 2000 (не поддерживается с версии 3.3)
  • Windows 3.x (не поддерживается с версии 2.0)
  • Windows 9x (не поддерживается с версии 2.6)
  • Windows NT4 (не поддерживается с версии 2.6)

Внешние порты, не интегрированные в официальную версию CPython от Python Software Foundation, со ссылками на основной сайт разработки, часто включают дополнительные модули для функций, специфичных для платформы, таких как графический и звуковой API для PSP и SMS, а также API камеры для S60. Эти порты включают в себя:

Корпоративный Linux

[ редактировать ]

Эти версии Python распространяются вместе с поддерживаемыми в настоящее время корпоративными дистрибутивами Linux. [33] Статус поддержки Python в таблице относится к поддержке со стороны основной группы Python, а не со стороны сопровождающего дистрибутива.

Корпоративный Linux
Версия дистрибутива распространения Окончание срока службы Версия Python
Ubuntu 22.04 LTS (медуза-джемми) 3.10 [1]
Ubuntu 20.04 LTS (фокальная ямка) 2030-04 [34] [ нужно обновить ] [35] Старая версия, но все еще поддерживается: 3.8. [36]
Ubuntu 18.04 LTS (Бионический бобр) 2028-04 [37] Старая версия, больше не поддерживается: 2.7. [38] Старая версия, больше не поддерживается: 3.6. [39]
Ubuntu 16.04 LTS (Ксениал Ксерус) 2021-04-30 [40] [ нужно обновить ] Старая версия, больше не поддерживается: 2.7. [38] Старая версия, больше не поддерживается: 3.5. [39]
Дебиан 12 2028-06 [41] Старая версия, но все еще поддерживается: 3.11. [41]
Дебиан 11 2026-06 [42] Старая версия, но все еще поддерживается: 3.9. [42]
Дебиан 10 2024-06 [43] [ нужно обновить ] Старая версия, больше не поддерживается: 2.7. [44] Старая версия, но все еще поддерживается: 3.7. [45] [ нужно обновить ]
Дебиан 9 2022-06-30 [46] [ нужно обновить ] Старая версия, больше не поддерживается: 2.7. [47] Старая версия, больше не поддерживается: 3.5. [48]
Ред Хэт Энтерпрайз Линукс 8 2029 Старая версия, больше не поддерживается: 2.7. [49] Старая версия, больше не поддерживается: 3.6.
Red Hat Enterprise Linux 7. 2024-11-30 [50] Старая версия, больше не поддерживается: 2.7. [51]
ЦентОС 8 2029-05-31 Старая версия, больше не поддерживается: 2.7. Старая версия, больше не поддерживается: 3.6.
ЦентОС 7 2024-06-30 [ нужно обновить ] Старая версия, больше не поддерживается: 2.7. [52]
SUSE Linux Enterprise Server 15 2031-07-31 Старая версия, больше не поддерживается: 2.7. [53] Старая версия, больше не поддерживается: 3.6.
SUSE Linux Enterprise Server 12 2027-10-31 Старая версия, больше не поддерживается: 2.7. [54]
SUSE Linux Enterprise Server 11 2022-03-31 [ нужно обновить ] Старая версия, больше не поддерживается: 2.7. [54]
Legend:
Старая версия
Старая версия, все еще поддерживается
Последняя версия
Latest preview version
Future release

Альтернативы

[ редактировать ]

«производственного качества», CPython — одна из нескольких реализаций Python включая: Jython , написанный на Java для виртуальной машины Java (JVM); PyPy , написанный на RPython и переведенный на C; и IronPython , написанный на C# для Common Language Infrastructure . Есть также несколько экспериментальных реализаций. [55]

  1. ^ Томас Воутерс (2 октября 2023 г.). «Python 3.12.0 (окончательная версия) уже здесь» .
  2. ^ «Инициализация, финализация и потоки» . Документация Python v3.8.3 . Проверено 4 июня 2020 г.
  3. ^ Джейк Эдж (15 августа 2023 г.). «Переводчик ГИЛ» . ЛВН . Проверено 13 января 2024 г.
  4. ^ «PEP 684 — GIL для каждого интерпретатора | peps.python.org» . Проверено 13 января 2024 г.
  5. ^ «PEP 703 — сделать глобальную блокировку интерпретатора необязательной в CPython | peps.python.org» . peps.python.org . Проверено 17 сентября 2023 г.
  6. ^ «PEP 719 — График выпуска Python 3.13 | peps.python.org» . peps.python.org . Проверено 17 сентября 2023 г.
  7. ^ Пол, Райан (26 марта 2009 г.). «Отчет Ars Technica о целях Unladen Swallow» . Arstechnica.com . Проверено 19 августа 2011 г.
  8. ^ Перейти обратно: а б Винтер, Коллин; Ясскин, Джеффри; Клекнер, Рид (17 марта 2010 г.). «PEP 3146 — объединение Unladen Swallow с CPython» . Python.org.
  9. ^ «Люди, работающие над Unladen Swallow» . Архивировано из оригинала 29 октября 2015 г. Проверено 8 августа 2019 г.
  10. ^ «Страница проекта Unladen Swallow» . Проверено 19 августа 2011 г.
  11. ^ «Проблема 9410: добавление оптимизации Unladen Swallow в рассол Python 3. — Трекер Python» . bugs.python.org . Проверено 8 августа 2019 г.
  12. ^ «Сообщение о comp.lang.python» . Проверено 19 августа 2011 г.
  13. ^ «Беснагруженная ласточка | Группы Google» . Проверено 19 августа 2011 г.
  14. ^ «Пост на Reddit от коммиттера Unladen» . Реддит.com. 24 июня 2010 г. Проверено 19 августа 2011 г.
  15. ^ Винтер, Коллин (8 ноября 2010 г.). «Текущий статус Unladen-Swallow» .
  16. ^ «Создание ветки релиза за четвертый квартал 2009 г.» . 26 января 2010 г. Проверено 19 августа 2011 г.
  17. ^ «Разработчики сосредоточены на слиянии с py3k-jit» . 13 июля 2010 г. Проверено 19 августа 2011 г.
  18. ^ «Базовая линия незагруженной ласточки» . Python.org . Проверено 19 августа 2011 г.
  19. ^ Клекнер, Рид (26 марта 2011 г.). «Ретроспектива незагруженной ласточки» . QINSB не является блогом о программном обеспечении (qinsb.blogspot.com) .
  20. ^ «Беснагруженная ласточка 1 квартал 2009 г.» . unladen-swallow, более быстрая реализация Python . Проверено 19 октября 2012 г.
  21. ^ «Беснагруженная ласточка 2009кв.» . unladen-swallow, более быстрая реализация Python . Проверено 19 октября 2012 г.
  22. ^ «Беснагруженная ласточка 3 квартал 2009 г.» . unladen-swallow, более быстрая реализация Python . Проверено 19 октября 2012 г.
  23. ^ «Реализации Python» . Проверено 19 июля 2012 г.
  24. ^ «PEP 11 — Удаление поддержки малоиспользуемых платформ» . Python.org . Проверено 8 августа 2019 г.
  25. ^ «Ирикс все еще поддерживается?» . 14 февраля 2009 г.
  26. ^ АмигаПитон
  27. ^ iSeriesPython
  28. ^ ПитонД
  29. ^ http://yellowblue.free.fr/yiki/doku.php/en:dev:python:start Python 2 и 3
  30. ^ Стековый Python для PSP
  31. ^ Порт Python для Windows CE
  32. ^ «Питон» . ВСИ . Проверено 31 августа 2021 г.
  33. ^ «Жизненные циклы поддержки корпоративных дистрибутивов Linux» . Архивировано из оригинала 30 августа 2022 г. Проверено 15 октября 2017 г.
  34. ^ «Цикл выпуска Ubuntu» . Убунту . Проверено 18 января 2021 г.
  35. ^ «После прекращения выпуска Python 2 Ubuntu 20.04 LTS движется вместе с удалением Python 2 — Phoronix» . phoronix.com . Проверено 01 апреля 2020 г.
  36. ^ «Бинарный пакет «python3» в Ubuntu Focus» . Launchpad.net .
  37. ^ «Ubuntu 18.04 продлен до 2028 года» . ServerWatch.com. 15 ноября 2018 г. Проверено 9 сентября 2019 г.
  38. ^ Перейти обратно: а б «Пакет Python-по умолчанию: Ubuntu» . ООО «Каноникал» 08.06.2018 . Проверено 8 июня 2018 г.
  39. ^ Перейти обратно: а б «Пакет Python3-по умолчанию: Ubuntu» . ООО «Каноникал» 08.06.2018 . Проверено 8 июня 2018 г.
  40. ^ Естественные науки, Школа компьютеров Университета Карнеги-Меллон. «Ubuntu 16.04 — прекращение эксплуатации в 2021 году — вычислительные мощности SCS — Университет Карнеги-Меллона» . Computing.cs.cmu.edu . Проверено 15 февраля 2021 г.
  41. ^ Перейти обратно: а б «Выпущен книжный червь Debian 12» . debian.org .
  42. ^ Перейти обратно: а б "Debian -- Новости -- Выпущен Debian 11 "яблочко"" . debian.org . Проверено 4 января 2022 г.
  43. ^ «LTS — Debian Wiki» . wiki.debian.org . Проверено 15 февраля 2021 г.
  44. ^ «Debian — Подробная информация о пакете Python в Buster» . packages.debian.org . Проверено 13 сентября 2019 г.
  45. ^ "Debian -- Новости -- Выпущен Debian 10 "buster"" . debian.org . Проверено 9 августа 2019 г.
  46. ^ «Debian — Новости — Срок службы долгосрочной поддержки Debian 8 подходит к концу» . debian.org . Проверено 15 февраля 2021 г.
  47. ^ «DistroWatch.com: Debian» . DistroWatch.com. 15 октября 2017 г. Проверено 15 октября 2017 г.
  48. ^ «Debian — Подробная информация о пакете Python3 в растянутом виде» . Проверено 19 декабря 2017 г.
  49. ^ «Python в RHEL 8» . Блог разработчиков Red Hat . 14.11.2018. Архивировано из оригинала 10 мая 2019 г. Проверено 10 мая 2019 г.
  50. ^ «Жизненный цикл Red Hat Enterprise Linux» . Портал для клиентов Red Hat . Проверено 01 апреля 2020 г.
  51. ^ «DistroWatch.com: Red Hat Enterprise Linux» . DistroWatch.com. 07.09.2017 . Проверено 15 октября 2017 г.
  52. ^ «DistroWatch.com: CentOS» . DistroWatch.com. 14 сентября 2017 г. Проверено 15 октября 2017 г.
  53. ^ «Примечания к выпуску | SUSE Linux Enterprise Desktop/SUSE Linux Enterprise Workstation Extension 15 GA» . suse.com . Проверено 8 августа 2019 г.
  54. ^ Перейти обратно: а б «DistroWatch.com: openSUSE» . DistroWatch.com. 14 октября 2017 г. Проверено 15 октября 2017 г.
  55. ^ Мартелли, Алекс (2006). Python в двух словах (2-е изд.). О'Рейли . стр. 5–7. ISBN  978-0-596-10046-9 .

Дальнейшее чтение

[ редактировать ]
  • Шоу, Энтони (2021). Внутреннее устройство CPython: ваше руководство по интерпретатору Python 3 . Настоящий Питон. ISBN  9781775093343 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 88d91896405591f9f689fa32e3db1ffb__1721072520
URL1:https://arc.ask3.ru/arc/aa/88/fb/88d91896405591f9f689fa32e3db1ffb.html
Заголовок, (Title) документа по адресу, URL1:
CPython - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)