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

Python jest ogromnie popularnym językiem programowania, wniektórych dziedzinach (np. bioinformatyce) jest dominującymjęzykiem programowania, w Pythonie jest np. m.in. serwis YouTube –a to wszystko mimo tego, że jeśli chodzi o wydajność, Python jestkiepski, niewiele oferuje w kwestii współbieżności i wsparcia dlanowoczesnych równoległych architektur. Żywotnie zainteresowanelepszą wydajnością YouTube’a Google znalazło bardzo ciekawerozwiązanie tej słabości. Zamiast ulepszać istniejąceimplementacje Pythona, stworzyło translatorGrumpy, który przekłada kod napisany w Pythonie na kod Go –google’owego języka, świetnie nadającego się do programowaniawspółbieżnego.

Obraz

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

Obraz

Ś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ą naPythona 3, mimo że koniec cyklu życia linii 2.7 planowany jest na2020 rok. Firma z Mountain View postawiła tu na ogarnięcie swojejogromnej, rozwijanej od lat bazy kodu w Pythonie 2.7.

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

Wydajność kodu uruchamianego na Grumpym i CPythonie w zależności od liczby rdzeni
Wydajność kodu uruchamianego na Grumpym i CPythonie w zależności od liczby rdzeni

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 – programyGrumpy’ego są kompilowane i linkowane jak każdy inny program wGo. Takie hybrydowe podejście pozwala z jednej strony wciąż więcpisać kod w Pythonie – wynik translacji nie jest zbyt czytelny dlaczł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: Gopowstało przecież w Mountain View, a jego wykorzystanie w takkluczowym przedsięwzięciu jak YouTube pozwoli przekonać takżeinne firmy, że jest to język programowania, na którym możnapolegać 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.

Źródło artykułu: www.dobreprogramy.pl
Wybrane dla Ciebie
Koniec dominacji USA w Europie? Francja porzuca Windowsa
Koniec dominacji USA w Europie? Francja porzuca Windowsa
Ministerstwo Cyfryzacji zachwala mSzyfr. Nowy, bezpieczny komunikator
Ministerstwo Cyfryzacji zachwala mSzyfr. Nowy, bezpieczny komunikator
Komunikat Pekao S.A. Dotyczy wszystkich klientów
Komunikat Pekao S.A. Dotyczy wszystkich klientów
Copilot znika. Microsoft wycofuje się z agresywnej promocji
Copilot znika. Microsoft wycofuje się z agresywnej promocji
Santander Bank Polska zmienia nazwę. Będzie nowy adres WWW
Santander Bank Polska zmienia nazwę. Będzie nowy adres WWW
Masz mObywatela? Niektóre funkcje będą niedostępne
Masz mObywatela? Niektóre funkcje będą niedostępne
Awaria w Alior Banku. Nie działa aplikacja (aktualizaja)
Awaria w Alior Banku. Nie działa aplikacja (aktualizaja)
Ostrzeżenie CERT Orange. "Karta SIM wymaga aktualizacji"
Ostrzeżenie CERT Orange. "Karta SIM wymaga aktualizacji"
Koniec Messenger.com. Wszystko, co musisz wiedzieć
Koniec Messenger.com. Wszystko, co musisz wiedzieć
Microsoft potwierdza: Windows 11 przyspieszy
Microsoft potwierdza: Windows 11 przyspieszy
ProgramData - co to jest i czy można tam sprzątać?
ProgramData - co to jest i czy można tam sprzątać?
AeroFTP - klient FTP z obsługą popularnych usług chmurowych
AeroFTP - klient FTP z obsługą popularnych usług chmurowych
ZATRZYMAJ SIĘ NA CHWILĘ… TE ARTYKUŁY WARTO PRZECZYTAĆ 👀