CPython

CPython — найбільш поширена, еталонна реалізація інтерпретатора мови програмування Python.

CPython
Тип реалізація мови програмуванняd
Еталонна реалізаціяd
інтерпретатор і вільне та відкрите програмне забезпечення
Автор(и) Гвідо ван Россум
Розробник Python Software Foundation
Стабільний випуск 3.8.1
Версії 3.10.2 (13 січня 2022)[1][2]
Репозиторій https://github.com/python/cpython
Платформа Microsoft Windows
Операційна система Багатоплатформова
Мова програмування C, Python
Ліцензія Software Foundation License
Вебсайт python.org

CPython є інтерпретатором байт-коду, написаний на C. Розробка CPython ведеться групою розробників під керівництвом творця Python Гвідо ван Россума. CPython є програмним забезпеченням з відкритим вихідним кодом.

Крім CPython, існують інші реалізації Python: Jython, IronPython, PyPy, Stackless Python.

Дизайн

Особливістю CPython є те, що він використовує глобальне блокування інтерпретатора (GIL) для кожного процесу інтерпретатора CPython, тобто в рамках одного процесу в будь-який момент часу може оброблятися лише один потік байт-коду Python. [3] Це не означає, що в багатопотоковому читанні немає сенсу; найпоширеніший сценарій з декількома потоками - це те, коли потоки в основному чекають завершення зовнішніх процесів.

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

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

У реальних програмах ситуації, коли GIL є значним вузьким місцем, є досить рідкісним. Це пояснюється тим, що Python властива повільна мова, і зазвичай не використовується для процесорів, які вимагають швидкого процесора або залежать від часу. Python, як правило, використовується на верхньому рівні і викликає функції в бібліотеках для виконання спеціалізованих завдань. Ці бібліотеки, як правило, не записуються в Python, а код Python в іншому потоці може виконуватися під час виклику до одного з цих базових процесів. Бібліотека, яка не є Python, закликана виконувати завдання, що вимагає процесора, не підлягає GIL і може одночасно виконувати безліч потоків на декількох процесорах без обмежень.

Паралельність коду Python може бути досягнута лише за допомогою окремих процесів інтерпретатора CPython, якими керує багатозадачна операційна система. Це ускладнює зв’язок між паралельними процесами Python, хоча модуль багатопроцесорної обробки дещо пом'якшує це; це означає, що програми, які дійсно можуть отримати користь від одночасного виконання Python-коду, можуть бути реалізовані з обмеженою сумою витрат.

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

Хоча було зроблено багато пропозицій щодо усунення GIL, загальним консенсусом було те, що в більшості випадків переваги GIL перевершують недоліки; у кількох випадках, коли GIL є вузьким місцем, додаток слід будувати навколо багатопроцесорної структури

Платформи, що підтримуються

Unix-подібні
Десктопні ОС
Спеціальні та вбудовані
Мейнфрейми та інші
  • OS/390
  • VMS
  • z/OS

Платформи, що більше не підтримуються

В PEP 11 перераховані платформи, які більше не підтримуються Python Software Foundation. Тим не менше ці платформи можуть мати підтримку від інших дистриб'юторів. Список платформ, що більше не підтримуються:

  • DOS (не підтримується, починаючи з 2.0)
  • IRIX 4 (не підтримується, починаючи з 2.3)
  • Mac OS 9 (не підтримується, починаючи з 2.4)
  • MINIX (не підтримується, починаючи з 2.3)

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

CPython є однією з декількох "виробничих особливостей" реалізації Python, включаючи: Jython, написаний на Java для Java віртуальної машини (JVM), PyPy, написаний на RPython та перекладений на C, та IronPython, написаний на C #. Також є кілька експериментальних реалізацій.[4]

Примітки

  1. https://github.com/python/cpython/releases/tag/v3.10.2 — 2022.
  2. Python 3.10.2, 3.9.10, and 3.11.0a4 are now available — 2022.
  3. Ініціалізація, завершення та теми. Процитовано 8 серпня 2015. Текст « .7.6 документація » проігноровано (довідка)
  4. Martelli, Alex (2006). Python in a Nutshell (вид. 2nd). O'Reilly. с. 5–7. ISBN 978-0-596-10046-9.

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.