Опубликован план избавления CPython от глобальной блокировки интерпретатора

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 2594
Зарегистрирован: 20.08.2022

#

Опубликован план избавления CPython от глобальной блокировки интерпретатора
Дата публикации:Sat, 29 Jul 2023 11:45:12 +0300




Руководящий совет проекта Python объявил о намерении утвердить предложение по расширению языка Python PEP-0703, в котором определяется добавление режима сборки CPython без глобальной блокировки интерпретатора (GIL, Global Interpreter Lock). В качестве вероятного срока реализации PEP-0703 упоминается выпуск Python 3.13, намеченный на осень следующего года.



Во внедряемом PEP-0703 определено оставление по умолчанию GIL, но добавление сборочной опции "--without-gil" для его отключения. Новый режим позволит решить проблему с распараллеливанием операций на многоядерных системах, вызванную тем, что глобальная блокировка не допускает параллельное обращение к разделяемым объектам из разных потоков. В долгосрочной перспективе (через 5 лет) интерпретатор планируется перевести по умолчанию на сборку только в режиме без глобальной блокировки, одновременно прекратив поддержку сборки с GIL.



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



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



До полного перехода на сборки без GIL планируется добиться всесторонней поддержки данных сборок со стороны сообщества, а также предоставить дополнительные C API и Python API для обеспечения безопасной многопоточности в существующем коде. Уход от GIL будет проведён в три этапа: добавление в CPython в 3.13 (возможно в 3.14) экспериментальной опции для сборки без GIL, поддерживаемой основной командой разработчиков; перевод опции сборки без GIL в разряд пригодных для рабочих внедрений и одобрение поставки сборок без GIL по желанию дистрибутивов; переход на сборку без GIL по умолчанию и удаление кода для поддержки GIL. Прогнозируется, что переход на третью стадию может произойти как минимум через 5 лет.







Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=59518

Жизнь за Нер'зула!

Ответить