Диспетчеризация в Python: Создание необязательного GIL

Руководящий совет сделал огромное объявление, касающееся будущего Python. А именно, они решили сделать глобальную блокировку интерпретатора (GIL) необязательной в CPython и в перспективе вообще отказаться от GIL.

Это огромное решение, которое коренным образом изменит Python.

Поэтому в этой статье я расскажу о том, что представляет собой GIL, о его преимуществах и недостатках, а также о том, что его ждет в будущем.

ГИЛ

Позвольте мне просмотреть Global Interpreter Lock по одному слову в обратном порядке, начиная с замок а затем переводчик и, наконец, глобальный.

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

An Интерпретатор - это программа для выполнения кода Python.

Слово "глобальный" здесь относится к области действия блокировки интерпретатора. Поскольку блокировка интерпретатора является глобальной, она гарантирует, что только один поток одновременно выполняет код Python в рамках одного процесса.

Кредит: СтатусНео.

Итак, GIL - это механизм, предотвращающий одновременную работу нескольких потоков через интерпретатор. Но зачем вам это нужно?

Преимущества

Основное преимущество GIL заключается в том, что он упрощает работу. Проще управлять памятью, проще управлять потоками, проще создавать модули.

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

А если вы не используете многопоточность, то GIL будет очень полезен, поскольку он обеспечивает бесперебойную работу.

Таким образом, GIL обеспечивает простоту и безопасность.

Тогда почему бы вам этого не хотеть?

Недостатки

Компромисс здесь заключается в соотношении удобства и скорости.

Предотвращая многопоточность, GIL делает CPython медленнее и менее производительным, чем некоторые другие языки (например, C++, Go и Rust).

Особенно в связи с бурным развитием искусственного интеллекта в последние несколько месяцев GIL становится все большей проблемой для быстрого и эффективного выполнения программ.

Будущее ГИЛ

Итак, теперь, когда Руководящий совет объявил о принятии Python Enhancement Proposal (PEP) 703, автор Сэм ГроссМы вступаем в неизведанные воды.

Бесчисленное количество расширений было написано с учетом GIL. Все стандарты, установленные в CPython, зависят от GIL. Все, кто строит на CPython, ставят GIL в центр своих программ (намеренно или нет).

Таким образом, Руководящий совет на начальном этапе делает GIL необязательным, но в долгосрочной перспективе планирует полностью отказаться от него.

Как говорится в сообщении, "мы не хотим создавать постоянный раскол между сборками (и модулями расширения) with-GIL и no-GIL".

Это совершенно изменит Python, и, что самое интересное, так, как никто еще не знает. Бретт Кэннон, в опросе, адресованном основной команде разработчиковпишет, что "создание свободно-поточного Python... имеет много неизвестных. Мы не знаем, сколько кода неявно опирается на GIL, или небезопасно для потоков тонким способом, который маскируется GIL".

ИГИЛ исчезает - что он унесет с собой?

И, что еще более важно, как будет выглядеть новый CPython?

Комментировать