В Python уже обсуждают предложение убрать GIL и получить лучшую производительность

Логотип Python

Python — это язык программирования высокого уровня.

Недавно появилась новость о том, что Руководящий комитет проекта Python объявил о своем желании одобрить Предложение по расширению языка Python «ПЭП-0703″, что делает глобальную блокировку интерпретатора необязательной в CPython и, по сути, определяет внедрение режима компиляции CPython без глобальной блокировки интерпретатора (GIL).

ПЭП-0703 определяет прекращение использования GIL по умолчанию, но добавьте параметр сборки «-sin-gil», чтобы отключить его. Как выl Ожидается, что новый режим решит проблему с распараллеливанием операций на многоядерных системах, вызванных тем, что глобальная блокировка не позволяет осуществлять параллельный доступ к общим объектам из разных потоков.



Отмечается, что в долгосрочной перспективе (через 5 лет) Оболочку планируется изменить по умолчанию только в глобальном неблокирующем режиме., в то же время отказавшись от поддержки компиляции с помощью GIL.



Благодарим всех за ответы на опрос по поводу предложения об отказе от GIL. Понятно, что общее настроение положительное, как для общей идеи, так и для PEP 703 в частности. Совет директоров также в целом положительно относится к обоим. Мы намерены принять PEP 703, хотя все еще прорабатываем детали принятия.

Как мы уже делали несколько раз в прошлом, мы хотим сообщить о своем намерении принять PEP, а также о наших текущих размышлениях о деталях, связанных с принятием.

Кроме того, Упоминается, что изменения, которые планируется провести в три этапа, которые являются краткосрочными, среднесрочными и долгосрочными. При условии на первом этапе отключать GIL по умолчанию нецелесообразно из-за накладных расходов, связанных с изменениями сборщика мусора, системы управления памятью и примитивов для организации блокировок. Например, из-за использования подсчета ссылок для изоляции потоков наблюдается падение производительности однопоточных скриптов (в наборе тестов pyperformance на 10%). В то же время может потребоваться отключение GIL в научных вычислениях, для которых отсутствие распараллеливания является более серьезной проблемой, чем линейная скорость выполнения кода.

На втором этапе в основном будет ожидаться подтверждение. и что есть достаточная поддержка со стороны сообщества, чтобы использование «не-GIL жизнеспособно» и убедитесь, что сборка без GIL поддерживается, но не по умолчанию.



На последнем этапе no-GIL уже будет значением по умолчанию и любые остатки GIL будут удалены (без излишнего нарушения обратной совместимости).

Замечено, что работа по отходу от GIL будет вестись очень аккуратно, чтобы не повторить ошибку что произошло при продвижении Python 3: Сборка без GIL должна обеспечивать совместимость со старыми версиями Python, и любые сторонние изменения кода, необходимые для работы со сборками без GIL, также должны работать со сборками GIL.

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



На протяжении всего процесса нам (основным разработчикам, а не только Координатору) необходимо будет переоценивать прогресс и предлагаемые сроки. Мы не хотим, чтобы это превратилось в еще одну десятилетнюю борьбу за обратную совместимость, и мы хотим иметь возможность отменить PEP 703 и найти другое решение, если оно станет проблематичным, поэтому нам нужно регулярно проверять, стоит ли продолжать работу.

Мы надеемся, что это внесет некоторую ясность в будущее PEP, поскольку мы прорабатываем точные детали принятия. Консультативный комитет будет работать над завершением приемки в ближайшие недели.

Перед полным переходом на сборки, отличные от GIL, мы планируем добиться полной поддержки этих сборок сообществом, а также предоставить дополнительные API-интерфейсы C и API-интерфейсы Python для обеспечения безопасной многопоточности в существующем коде.

Наконец, как уже было сказано, ожидается, что переход к третьему этапу может произойти как минимум через 5 лет, а вероятной датой PEP-0703 является выпуск Python 3.13, запланированный на осень следующего года.



Если вы интересно узнать об этом больше, вы можете проверить подробности По следующей ссылке.




2023-08-03T14:35:33
программирование