Python bez GIL: Szybciej, ale czy na pewno oszczędniej?
Cześć! Dziś pogadamy o temacie, który ostatnio huczy w świecie Pythona. Chodzi o wersję bez GIL. Brzmi jak marzenie o prędkości? Niekoniecznie. Okazuje się, że to nie takie proste.
Co to ten GIL i dlaczego wkurza?
GIL, czyli Global Interpreter Lock, to blokada w Pythonie. Działa jak strażnik, który pozwala tylko jednemu wątkowi na raz ruszyć procesor. Masz cztery rdzenie w komputerze? Python i tak korzysta z jednego. Reszta czeka.
To irytuje od lat. Wielowątkowe zadania idą jak krew z nosa.
Eksperyment bez GIL
Od Pythona 3.13 jest testowa wersja. Wyłączasz GIL i wątki latają swobodnie po wszystkich rdzeniach. Rewolucja?
Zatrzymaj się na chwilę. Badania pokazują drugą stronę medalu: zużycie energii.
Niespodzianka: energia rośnie
Naukowcy zmierzyli prąd. Wyniki? Zaskakujące.
Kiedy wygrywa ⚡
Dla zadań równoległych – np. przetwarzanie dużych danych osobno – no-GIL błyszczy:
- Czas wykonania spada nawet 4 razy.
- Mniej energii ogółem, bo kończy szybciej.
- Rdzenie pracują pełne obroty.
Idealny scenariusz. Szybciej i taniej w prądzie.
Kiedy traci 📈
A codzienne skrypty? Te sekwencyjne, bez wielowątkowości? Katastrofa:
- Zużycie energii rośnie o 13-43%.
- Prędkość bez zmian.
- Więcej pamięci na starcie.
Boli, co?
Skąd ten problem?
Bez GIL każdy obiekt dostaje własny zamek. Ciągle działa ochrona wątków. Inny alokator pamięci. To jak pilnowanie każdej kostki cukru w magazynie, zamiast drzwi na wejściu.
Jeśli kod nie korzysta z wielu rdzeni, płacisz za nic.
Lekcja z życia
Nie każdy trik przyspiesza wszystko. No-GIL to narzędzie dla specyficznych zadań. W data centerach, które żrą 1-1,3% światowej prądu, złe decyzje to marnotrawstwo na skalę masową.
Co robić?
Zanim włączysz no-GIL, sprawdź:
- Czy twój kod naprawdę działa równolegle?
- Przetwarzasz dane niezależnie?
- Czy to zwykły skrypt po kolei?
Tak? Testuj. Nie? Zostań przy standardowym Pythonie.
Podsumowanie
To badanie pokazuje, jak technologia ma ukryte haczyki. Python słusznie robi GIL opcjonalnym, nie usuwa go na stałe. Jako programiści musimy myśleć nie tylko o sekundach, ale i o watach.
A ty? Próbowałeś no-GIL? Ostrzega cię to badanie czy motywuje? Daj znać w komentarzach!
Źródło: https://arxiv.org/pdf/2603.04782