Python Dispatch: Uczynienie GIL opcjonalnym

Rada Sterująca dokonała wielkie ogłoszenie dotyczące przyszłości Pythona. Mianowicie, zdecydowali się uczynić Global Interpreter Lock (GIL) opcjonalnym w CPythonie i ostatecznie całkowicie usunąć GIL.

To ogromna decyzja, która fundamentalnie zmieni Pythona.

Dlatego w tym poście omówię, czym jest GIL, jego zalety i wady oraz co przyniesie przyszłość.

GIL

Przejdę przez Global Interpreter Lock po jednym słowie w odwrotnej kolejności, zaczynając od blokada a następnie tłumacz i wreszcie, globalny.

Blokada jest mechanizmem, który pozwala na uruchomienie tylko jednego wątku w danym czasie. Kiedy więc wątek zdobędzie blokadę, uzyskuje wyłączny dostęp do interpretera Pythona.

An interpreter jest programem wykonującym kod Pythona.

Słowo "globalny" odnosi się tutaj do zakresu blokady interpretera. Ponieważ blokada interpretera jest globalna, gwarantuje to, że tylko jeden wątek wykonuje kod Pythona w danym czasie w ramach jednego procesu.

Kredyt: StatusNeo.

Tak więc GIL jest mechanizmem, który zapobiega jednoczesnemu uruchamianiu wielu wątków przez interpreter. Ale dlaczego miałbyś tego chcieć?

Zalety

Główną zaletą GIL jest to, że ułatwia pracę. Zarządzanie pamięcią jest łatwiejsze, zarządzanie wątkami jest łatwiejsze, a tworzenie modułów jest łatwiejsze.

Bez GIL można szybko napotkać problemy z wielowątkowością. Jeśli nie umieścisz odpowiednich lokalnych blokad dla każdego wątku, możesz skończyć z zawieszeniem Pythona lub uszkodzeniem innej pamięci w komputerze.

A jeśli nie korzystasz z wielowątkowości, GIL jest bardzo pomocny, ponieważ zapewnia płynne działanie.

Tak więc GIL zapewnia prostotę i bezpieczeństwo.

Więc dlaczego miałbyś tego nie chcieć?

Wady

Kompromisem jest tutaj łatwość i szybkość.

Zapobiegając wielowątkowości, GIL sprawia, że CPython jest wolniejszy i mniej wydajny niż niektóre inne języki (takie jak C++, Go i Rust).

Szczególnie wraz z eksplozją sztucznej inteligencji w ciągu ostatnich kilku miesięcy, GIL staje się coraz większym problemem w szybkim i wydajnym wykonywaniu programów.

Przyszłość GIL

Tak więc teraz, gdy Rada Sterująca ogłosiła, że zaakceptowała Propozycja ulepszenia Pythona (PEP) 703, napisana przez Sama Grossawkraczamy na nieznane wody.

Niezliczone rozszerzenia zostały napisane z myślą o GIL. Wszystkie standardy CPythona zależą od GIL. Każdy buduje w CPythonie z GIL w centrum swoich programów (celowo lub nie).

W związku z tym Rada Sterująca początkowo czyni GIL opcjonalnym, ale w dłuższej perspektywie planuje całkowite wycofanie GIL.

Jak napisali w poście: "Nie chcemy tworzyć stałego podziału na kompilacje z GIL i bez GIL (oraz moduły rozszerzeń)".

To absolutnie odmieni Pythona i, co być może najciekawsze, w sposób, którego nikt jeszcze nie zna. Brett Cannon, w ankiecie skierowanej do głównego zespołu programistównapisał, że "uczynienie Pythona wielowątkowym... wiąże się z wieloma niewiadomymi. Nie wiemy, jak wiele kodu pośrednio opiera się na GIL lub nie jest bezpieczne dla wątków w subtelny sposób, który jest maskowany przez GIL".

GIL znika - co zabierze ze sobą?

I, co ważniejsze, jak będzie wyglądał nowy CPython?

Pozostaw komentarz