Jump to content

Бесстековый Python

Бесстековый Python
Оригинальный автор(ы) Кристиан Тисмер
Разработчик(и) Ансельм Кросс
Первоначальный выпуск 1998 год ; 26 лет назад ( 1998 )
Стабильная версия
3.8.1-слп [1]  Отредактируйте это в Викиданных / 22 января 2020 г .; 4 года назад ( 22.01.2020 )
Предварительный выпуск
12 августа 2021 г .; 2 года назад ( 12 августа 2021 )
Репозиторий
Написано в С , Питон
Операционная система Linux , MacOS , Windows
Тип Устный переводчик
Лицензия Лицензия Фонда программного обеспечения Python
Веб-сайт www .безштабелируемый

Stackless Python , или Stackless , — это интерпретатор языка программирования Python , названный так потому, что он не зависит от C стека вызовов для своего собственного стека. На практике Stackless Python использует стек C, но стек очищается между вызовами функций. [2] Наиболее заметной особенностью Stackless являются микропотоки , которые позволяют избежать большей части накладных расходов, связанных с обычными потоками операционной системы . Помимо возможностей Python, Stackless также добавляет поддержку сопрограмм , каналов связи и сериализации задач .

В Stackless Python выполняющаяся программа разбивается на микропотоки, которые управляются самим интерпретатором языка, а не ядром операционной системы — переключение контекста и планирование задач выполняются исключительно в интерпретаторе (поэтому они также рассматриваются как форма зеленого потока ). . Микропотоки управляют выполнением различных подзадач в программе на одном ядре ЦП. Таким образом, они являются альтернативой асинхронному программированию на основе событий, а также позволяют избежать накладных расходов, связанных с использованием отдельных потоков для одноядерных программ (поскольку не требуется переключение режима между пользовательским режимом и режимом ядра, поэтому можно уменьшить загрузку ЦП).

Хотя микропотоки облегчают выполнение подзадач на одном ядре, Stackless Python не удаляет глобальную блокировку интерпретатора CPython и не использует несколько потоков и/или процессов. Таким образом, он допускает только совместную многозадачность на общем процессоре, а не параллелизм (первоначальное вытеснение изначально было недоступно, но теперь в той или иной форме доступно). [3] ). Чтобы использовать несколько ядер ЦП, все равно потребуется построить систему межпроцессного взаимодействия поверх процессов Stackless Python.

Из-за значительного количества изменений в исходном коде Stackless Python нельзя установить на уже существующую установку Python в качестве расширения или библиотеки . Вместо этого это полноценный дистрибутив Python. Большинство функций Stackless также реализованы в PyPy , автономном интерпретаторе Python и JIT-компиляторе . [4]

Использовать

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

Хотя весь Stackless представляет собой отдельный дистрибутив, его функциональность переключения была успешно упакована в виде расширения CPython под названием greenlet. [5] Он используется рядом библиотек (например, gevent [6] ), чтобы предоставить экологически безопасное решение для многопоточности для CPython. С тех пор Python получил собственное решение для зеленых потоков: await /async.

Stackless широко используется при реализации массовой многопользовательской онлайн-игры Eve Online , а также в IronPort почтовой платформе .

См. также

[ редактировать ]
  1. ^ «Выпуск v3.8.1-slp» . 12 августа 2021 г. Проверено 8 марта 2022 г.
  2. ^ Архивировано в Ghostarchive и Wayback Machine : История бесстекового Python . Ютуб .
  3. ^ «О Stackless» . Архивировано из оригинала 23 июня 2020 года . Проверено 26 августа 2016 г. встроен планировщик циклического перебора. Его можно использовать для планирования тасклетов как совместно, так и упреждающе.
  4. ^ «Функции Stackless на уровне приложения — документация PyPy» . pypy.readthedocs.org .
  5. ^ «greenlet: облегченное параллельное программирование — документация greenlet 0.4.0» . greenlet.readthedocs.org .
  6. ^ «Что такое вентилируемое? — вентилируемая документация 1.3.0.dev0» . www.gevent.org .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3c11ab1ad413cd82f0edfe3560a10892__1707848040
URL1:https://arc.ask3.ru/arc/aa/3c/92/3c11ab1ad413cd82f0edfe3560a10892.html
Заголовок, (Title) документа по адресу, URL1:
Stackless Python - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)