r   e   k   l   a   m   a
r   e   k   l   a   m   a

Python napędzany Go – tak Google zwiększyło skalowalność YouTube

Strona główna AktualnościOPROGRAMOWANIE

Python jest ogromnie popularnym językiem programowania, w niektórych dziedzinach (np. bioinformatyce) jest dominującym językiem programowania, w Pythonie jest np. m.in. serwis YouTube – a to wszystko mimo tego, że jeśli chodzi o wydajność, Python jest kiepski, niewiele oferuje w kwestii współbieżności i wsparcia dla nowoczesnych równoległych architektur. Żywotnie zainteresowane lepszą wydajnością YouTube’a Google znalazło bardzo ciekawe rozwiązanie tej słabości. Zamiast ulepszać istniejące implementacje Pythona, stworzyło translator Grumpy, który przekłada kod napisany w Pythonie na kod Go – google’owego języka, świetnie nadającego się do programowania współbieżnego.

Grumpy to jednocześnie translator i środowisko uruchomieniowe. Kod źródłowy w Pythonie zostaje przekszałcony w kod źródłowy w Go, który zostaje skompilowany przez kompilator Go bezpośrednio do kodu maszynowego. Żadnych maszyn wirtualnych, żadnego kodu bajtowego, jest po prostu szybko, znacznie szybciej, niż na wykorzystywanym w YouTube wcześniej CPythonie.

Środowisko uruchomieniowe Grumpy’ego to biblioteka Go, działająca podobnie jak interfejs programowania Pythona dla C. Wszystko to działa tylko dla kodu w starym Pythonie 2.7 – najwyraźniej Google nie jest specjanie zainteresowane migracją na Pythona 3, mimo że koniec cyklu życia linii 2.7 planowany jest na 2020 rok. Firma z Mountain View postawiła tu na ogarnięcie swojej ogromnej, rozwijanej od lat bazy kodu w Pythonie 2.7.

r   e   k   l   a   m   a

Autorzy tego projektu podkreślają, że Grumpy ma być środowiskiem uruchomieniowym dla każdego projektu napisanego w czystym Pythonie. Nie ma tu wsparcia dla modułów rozszerzeń w C, ale dzięki temu uzyskano sporą elastyczność w projektowaniu API i reprezentacji obiektów, które doskonale się skalują dla równoległych obciążeń roboczych.

Nie ma tutaj np. GIL-a czyli globalnej blokady interpretera (mutexa), który uniemożliwia współbieżne wykonywanie kodu. Wykorzystywane są efektywniejsze metody odśmiecania pamięci z Go, przede wszystkim jednak to nie jest interpreter – programy Grumpy’ego są kompilowane i linkowane jak każdy inny program w Go. Takie hybrydowe podejście pozwala z jednej strony wciąż więc pisać kod w Pythonie – wynik translacji nie jest zbyt czytelny dla człowieka. Jednak niektóre elementy, kluczowe dla wydajności, można od podstaw napisać w Go i wywołać z Pythona,

Rozwiązanie takie ma dla Google’a także efekt marketingowy: Go powstało przecież w Mountain View, a jego wykorzystanie w tak kluczowym przedsięwzięciu jak YouTube pozwoli przekonać także inne firmy, że jest to język programowania, na którym można polegać i który może rywalizować z projektami Oracle’a, Microsoftu czy Apple.

Grumpy jest oczywiście projektem opensource'owym, na licencji Apache 2.0, hostowanym na GitHubie.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.   

Trwa konkurs "Ogól naczelnego", w którym codziennie możecie wygrać najnowsze maszynki systemowe Hydro Connect 5 marki Wilkinson Sword.

Więcej informacji

Gratulacje!

znalezione maszynki:

Twój czas:

Ogól Naczelnego!
Znalazłeś(aś) 10 maszynek Wilkinson Sword
oraz ogoliłaś naszego naczelnego!
Przejdź do rankingu
Podpowiedź: Przyciśnij lewy przycisk myszki i poruszaj nią, aby ogolić brodę.